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

C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.64
kveigs
16 / 16 / 2
Регистрация: 20.03.2010
Сообщений: 85
#1

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

18.02.2012, 16:24. Просмотров 3592. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2012, 16:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос быстрое рисование с помощью GDI+ (C++):

Быстрое программирование - C++
Расскажите что это такое. Ничего толкового ни на русском ни на английском не нашел. Только пару книг, но их надо покупать.

Быстрое преобразование Фурье - C++
Доброго времени суток. Пытаюсь реализовать на С++ создание цифрового фильтра методом свертки, при этом использую БПФ, реализованную на...

Быстрое чтение большого файла. Зависает процесс - C++
Всем доброго времени суток. Есть задача прочитать файл(1-20 мб), который состоит из слов разделённых пробелами для того, чтобы переписать...

GDI+ - C++ Builder
Почему не происходит отрисовка примитивов? //--------------------------------------------------------------------------- #include...

Заливка сектора GDI+ - C++ Builder
Доброго времени, коллеги! Что-то запутался совсем. Не получается сделать заливку области GDI+. Gdiplus::Graphics * graphics; ...

GDI+, ошибки линковки - C++ Builder
include <gdiplus> ... Gdiplus::Graphics *gdiGraphics; gdiGraphics = new Gdiplus::Graphics(this->Image1->Canvas->Handle); ...

3
kravam
18.02.2012, 19:34
  #2

Не по теме:

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

0
kveigs
16 / 16 / 2
Регистрация: 20.03.2010
Сообщений: 85
18.02.2012, 20:01  [ТС] #3
вот тут вот всё неплохо описано http://graphicon.ru/oldgr/courses/cg...ws/#tth_sEc2.5
0
Yurii_74
paladin
279 / 179 / 3
Регистрация: 25.02.2009
Сообщений: 592
21.02.2012, 06:36 #4
Помню, сам сталкивался с подобным. Использовал функцию CreateCompatibleBitmap.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.02.2012, 06:36
Привет! Вот еще темы с ответами:

GDI+ нарисовать линию - C++ Builder
Замучился с этим GDI+ уже. Решил начать с простого. Нарисовать линию на канве пустой формы. Пишу: void __fastcall...

Конфликт GDI+ с Memo - C++ Builder
Доброго времени суток! Имеется простецкий кусок кода, который рисует произвольную линию на image средствами GDI. Gdiplus::Graphics...

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

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


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

Или воспользуйтесь поиском по форуму:
4
Yandex
Объявления
21.02.2012, 06:36
Ответ Создать тему
Опции темы

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