Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tleck
7 / 7 / 0
Регистрация: 11.09.2011
Сообщений: 128
#1

Программа рисования - C++

10.10.2011, 17:45. Просмотров 856. Ответов 2
Метки нет (Все метки)

Поделитесь пожалуйста кодом программы рисования на С++. Линии, вставка картинки.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2011, 17:45     Программа рисования
Посмотрите здесь:

Нужна программа рисования блок-схем - C++
Может у кого есть программа которая рисует блок-схему по коду С++? Очень нада

Средства рисования C++ - C++
Доброго времени суток форумчане. Я столкнулся с проблемой рисования на C++, просто не понимаю чем и как. На данный момент у меня идет...

Рисования графика - C++
Есть функция y=x, надо построить график функции интервал например

Дуги, алгоритм рисования - C++
как рисовать дуги как в пейнте, то есть не просто выгнутая окружность, а со смещённым центром. каков алгоритм?

ООП для рисования - C++
Здравия желаю. Прошу помочь с написанием программы. Необходимо, применив ооп, сделать программу, при запуске которой на форме рисуется...

Класс для рисования кругов - C++
Класс для рисования кругов (хранить радиус R и координаты x,y центра). Вычислять площадь круга и длину окружности.

Оптимальный алгоритм рисования линий - C++
1) Является ли алгоритм рисования линии перебором точек оптимальным? for(float i=Xmin, j; i<=Xmax; i+=0.001) { j = k*i + b; ...

Рекурсивная функция рисования кривой - C++
Помогите перевести код: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,...

Функция для рисования окружности - C++
Есть функция для рисования триугольника , а как нарисовать коло ? void Triangle::Plump() { MoveToEx(dc, x, y, NULL); ...

Теория рисования в bmp файле - C++
Доброе время суток! Никак не получается найти теорию по тому, как рисовать в bmp файле с использованием c++, буду очень признателен если вы...

Что использовать для рисования примитивов - C++
Ребят подскажите на чем можно программно порисовать? желательно на с++ в 12 визуалке для WinForm. находил учебники для 10 версии на...

Как оптимизировать функцию рисования отрезка - C++
Привет. От нечего делать решил написать функцию рисования отрезка по алгоритму Брезенхема. Использовал dev-cpp + MinGW и библиотеку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zago-vlad
13 / 8 / 1
Регистрация: 12.01.2010
Сообщений: 106
10.10.2011, 20:50     Программа рисования #2
Ты хочешь графический редактор сделать?
Если да, то поищи в Google, может что-то найдешь.
Также можешь посмотреть исходники GIMP, правда они сложноваты.
xAtom
914 / 739 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
11.10.2011, 03:04     Программа рисования #3
Tleck, вот код набросал, загляни ещё в раздел WinAPI там есть темы на твою специфику. Тут я кратко написал как дополнение.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <windows.h>
LRESULT CALLBACK  PaintProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
 
int main() {
   ShowWindow(GetForegroundWindow(), SW_HIDE); // делаем консоль невидимую
   MSG  msg;
   // создаём окно заимствуя класс - "STATIC"
   HWND wnd = CreateWindowA("STATIC", "Графика-GDI", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 
                    GetDesktopWindow(), NULL, (HINSTANCE) GetModuleHandle(NULL), 0); 
   if(! wnd)
         return 1;
    SetWindowLong(wnd, GWL_WNDPROC, (LONG)PaintProc); // добавляем обработчик сообщений
    SetClassLong(wnd, GCL_HCURSOR, (LONG)LoadCursor(NULL, IDC_ARROW));  // курсор
    SetClassLong(wnd, GCL_HBRBACKGROUND, (LONG)GetStockObject(WHITE_BRUSH));  // фоновую заливку
    ShowWindow(wnd, SW_SHOWDEFAULT);  
    UpdateWindow(wnd);
    
    ZeroMemory(&msg, sizeof(MSG));
    while(GetMessageA(&msg, NULL, 0U, 0U)) {
           DispatchMessageA(&msg);
           TranslateMessage(&msg);
    }  
    DestroyWindow(wnd);
    return 0;
}
 
LRESULT CALLBACK  PaintProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) {
   PAINTSTRUCT  paint;
   HDC dc;
   static  HPEN   pen;
   static  HBRUSH brush = NULL;
   static  SIZE   size  = { 0L, 0L };
   HGDIOBJ old1, old2;
   HBITMAP bmp;
 
  switch(msg) {
     case WM_SHOWWINDOW:
        // создаём синие перо с размером 1-пиксель
        pen   = CreatePen(PS_SOLID, 1, RGB(0, 0, 255));  
   
        // здесь укажи свой путь к битмаповому файлу .bmp
        bmp = (HBITMAP)LoadImage((HINSTANCE)GetWindowLong(hwnd, GWL_HINSTANCE), "D:\\tiled.bmp", 
                   IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
        if(bmp) {
             BITMAP sz;
             GetObject(bmp, sizeof(BITMAP), (LPVOID)&sz);
             size.cx = sz.bmWidth;
             size.cy = sz.bmHeight;
             brush  = CreatePatternBrush(bmp);
             DeleteObject(bmp);
             bmp  = NULL;
        } 
         break;
    case WM_PAINT:
        dc   = BeginPaint(hwnd, &paint);
        old1 = SelectObject(dc, pen);
        old2 = SelectObject(dc, brush); 
        // выводим картинку с начальных координат
        Rectangle(dc, 0, 0, size.cx, size.cy);
 
        // рисуем линию по середине
        MoveToEx(dc, 10, paint.rcPaint.bottom/2, NULL);
        LineTo(dc, paint.rcPaint.right-10, paint.rcPaint.bottom/2);
 
        SelectObject(dc, brush);
        SelectObject(dc, old1);
        EndPaint(hwnd, &paint);
             break;
     case WM_NCPAINT:
        InvalidateRect(hwnd, NULL, FALSE);
             return DefWindowProcA(hwnd, msg, wParam, lParam);
     case WM_SIZE:
        InvalidateRect(hwnd, NULL, FALSE);
            break;
     case WM_DESTROY:
         DeleteObject(pen);
         DeleteObject(brush);
         PostQuitMessage(0u);
         break;
     default: return DefWindowProcA(hwnd, msg, wParam, lParam);
   }
   return 0;
}
Перейди по ссылке я там делал примитивный растровый редактор посмотри его, не бойся там чистый WinAPI.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru