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

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

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

C++ ООП для рисования
Рисования графика C++
Нужна программа рисования блок-схем C++
Оптимальный алгоритм рисования линий C++
C++ Рекурсивная функция рисования кривой
Дуги, алгоритм рисования C++
Класс для рисования кругов C++
C++ Теория рисования в bmp файле

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zago-vlad
13 / 8 / 1
Регистрация: 12.01.2010
Сообщений: 106
10.10.2011, 20:50     Программа рисования #2
Ты хочешь графический редактор сделать?
Если да, то поищи в Google, может что-то найдешь.
Также можешь посмотреть исходники GIMP, правда они сложноваты.
xAtom
 Аватар для xAtom
910 / 735 / 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.
Yandex
Объявления
11.10.2011, 03:04     Программа рисования
Ответ Создать тему
Опции темы

Текущее время: 06:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru