Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.92/26: Рейтинг темы: голосов - 26, средняя оценка - 4.92
16 / 16 / 0
Регистрация: 20.03.2010
Сообщений: 85
1

быстрое рисование с помощью GDI+

18.02.2012, 16:24. Просмотров 4754. Ответов 3
Метки нет (Все метки)

Доброго времени суток! Хочу вывести прямоугольник в центр экрана используя GDI+, если рисовать сразу, то картинка будет тормозить. Поэтому сначала рисую в hMemDC. Однако в этом случае, на экран ничего не выводится.. Ошибку то же не выдаёт.. Что я делаю не так??
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
HDC hdc=GetDC(GetDesktopWindow());
HDC hMemDC;
hMemDC = CreateCompatibleDC(hdc);
if(hMemDC)
{
    Graphics g2(hMemDC);
    RectF bounds(rect.left,rect.top, rect.right-rect.left, rect.bottom-rect.top);
    LinearGradientBrush br(bounds, Color(130, 255, 0, 0), Color(255, 0, 0, 255), 
          LinearGradientModeBackwardDiagonal); 
   g2.FillRectangle(&br,bounds.X,bounds.Y, bounds.Width, bounds.Height);
   // быстро копируем результат отрисовки  
   BitBlt(hdc, bounds.X,bounds.Y, bounds.Width, bounds.Height, hMemDC, 0, 0,  SRCCOPY);
   // освобождаем контекст
   DeleteDC(hMemDC);
}
else
{
   MessageBox(hWndMain, L"Error", L"SafeEye's error", MB_OK);
}
Добавлено через 1 час 2 минуты
Ура!!! Получилось вот так вот, даже на картинке нарисовать чего-то)))
C++
1
2
3
4
5
6
7
8
hOldBitmap = (HBITMAP)SelectObject(hMemDC, (HGDIOBJ) hBitmap);
     Graphics g2(hMemDC);         
         g2.FillRectangle(&br,bounds.X,bounds.Y, bounds.Width, bounds.Height);
        
        // быстро копируем результат отрисовки
    BitBlt(hdc, bounds.X,bounds.Y, bounds.Width, bounds.Height, hMemDC, 0, 0, SRCCOPY);
    SelectObject(hMemDC, (HGDIOBJ) hOldBitmap);
    // освобождаем контекст
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2012, 16:24
Ответы с готовыми решениями:

Создание классов геометрических фигур, рисование на GDI (MFC)
Нужно создать класс Shape, как некий родительский класс геометрических фигур, от которого будут...

GDI, Рисование звезды
Здравствуйте, подскажите пожалуйста, что нужно добавить в код, что бы кисть применялась к...

GDI функции (рисование): критична ли утечка памяти и как её устранить?
Друзья! Вот код. Не пинать (к примеру, все хэндлы можно было объявить ВНЕ цикла, я и сам знаю....

Рисование STATIC с помощью мышки
Сделал все кроме того что помеченного синим цветом. Не могли бы вы подсказать, как мне доделать это...

3
kravam
18.02.2012, 19:34
  #2

Не по теме:

Где брал литературу по GDI+?

0
16 / 16 / 0
Регистрация: 20.03.2010
Сообщений: 85
18.02.2012, 20:01  [ТС] 3
вот тут вот всё неплохо описано http://graphicon.ru/oldgr/cour... tth_sEc2.5
0
paladin
285 / 185 / 7
Регистрация: 25.02.2009
Сообщений: 590
21.02.2012, 06:36 4
Помню, сам сталкивался с подобным. Использовал функцию CreateCompatibleBitmap.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2012, 06:36

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Рисование треугольника Серпинского с помощью GTK
Всем доброго времени суток! Сейчас разбераю тему фракталов и нашел код программы для построения...

Рисование с помощью GDI персонажей в Pacman
Есть уроки по рисованию где все доскональна объясняется? В моем случаи нужно нарисовать Героя...

Рисование в GDI
Всем привет! Изучаю ассемблер по книге Владислава Пирогова "Ассемблер для WINDOWS 4-е издание"....

Рисование GDI+ линий
Добрый день, уважаемые форумчане! Не могу никак (знаний не хватает) целый день решить элементарную...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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