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

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

Войти
Регистрация
Восстановить пароль
 
kveigs
16 / 16 / 2
Регистрация: 20.03.2010
Сообщений: 85
#1

Исчезает всё нарисованное на gdi+ - C++

28.02.2012, 22:08. Просмотров 564. Ответов 3
Метки нет (Все метки)

Доброго времени суток!

Пишу подобие своего gui на gdi+.. Всё бы хорошо, но через некоторое время (около минуты), исчезает всё нарисованное.. и никакой Invalidate не помогает(( Что же делать?? Может где-то я не освобождаю ресурсы?? другого объяснения найти не могу(

После каждого движения мышкой проверяю положения курсора, и если он попал в кнопку, то отрисовываю картинку с помощью ImageDraw.. Ещё там всё-время отображаю изображение с веб-камеры.. Только вот его я рисую с помощью BitBtl и оно не куда не исчезает...

Подскажите с чем может быть связана моя проблема?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.02.2012, 22:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Исчезает всё нарисованное на gdi+ (C++):

сегодня наконец то понял что такое КЛАСС, и ОБЪЕКТ. понято всё, кроме одного - зачем всё это? в смысле, можно же без этого? так зачем жизнь усложнять? - C++
сегодня наконец то понял что такое КЛАСС, и ОБЪЕКТ. понято всё, кроме одного - зачем всё это? в смысле, можно же без этого? так зачем жизнь...

Есть ли в WPF полноценная замена GDI+? Чтобы можно было всё, что можно в GDI+? Просто думаю углубляться в работу с изображениями в WPF или GDI. - C# WPF
Ну собственно весь вопрос в заголовке темы.

Как сохранить нарисованное в GDI на форме в картинку - C++ Builder
Желательно наименее сложный способ

При перекрытии окна другими окнами исчезает нарисованное... - C++ WinAPI
При перекрытии окна другими окнами исчезает нарисованное... Как быть? Я рисую сначала в MemDC, потом то, что получилось отправляю в HDC. ...

Исчезает всё после вставки видео от youtube, vimeo и тд - PHP
В общем когда добавляю пост в блог, там есть input:type=text, и в него вбиваю ссылку видео с iframe сразу (<iframe width="1050"...

в Chrome (Опера,ЯндБ) при обновлении страницы(переходе) исчезает сессия $_SESSION (в FF, IE-всё корректно) - PHP
Форумчане, помогите плиз, в Chrome (Опера,ЯндБ) при обновлении страницы(переходе) исчезает сессия $_SESSION (в FF, IE-всё корректно). ...

3
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
28.02.2012, 22:11 #2
kveigs, нарисованное мышкой вы наверное нигде не фиксируете (сохраняете введенные данные). Программа нарисует и забудет
1
Jupiter
Каратель
Эксперт С++
6558 / 3979 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.02.2012, 22:13 #3
код в студию
1
kveigs
16 / 16 / 2
Регистрация: 20.03.2010
Сообщений: 85
28.02.2012, 22:29  [ТС] #4
Спасибо всем. Уже всё работает норм - отрисовываю и кнопочки свои теперь с помощью BitBlt
вот код, может быть кому-нибудь пригодится
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
//рисует изображение с полупрозрачностью
void DrawWithAlpha(Bitmap* bitmap, Graphics* g, int x, int y, int width, int height, float alpha)
{
    // Initialize the color matrix.
    // Notice the value 0.8 in row 4, column 4.
    ColorMatrix colorMatrix = {1.0f, 0.0f, 0.0f, 0.0f, 0.0f,
                           0.0f, 1.0f, 0.0f, 0.0f, 0.0f,
                           0.0f, 0.0f, 1.0f, 0.0f, 0.0f,
                           0.0f, 0.0f, 0.0f, alpha, 0.0f,
                           0.0f, 0.0f, 0.0f, 0.0f, 1.0f};
    // Create an ImageAttributes object and set its color matrix.
    ImageAttributes imageAtt;
    imageAtt.SetColorMatrix(&colorMatrix, ColorMatrixFlagsDefault,
       ColorAdjustTypeBitmap);
    // Now draw the semitransparent bitmap image.
    g->DrawImage(
       bitmap, 
       Rect(0, 0, width, height),  // Destination rectangle
       x,                             // Source rectangle X 
       y,                             // Source rectangle Y
       width,                        // Source rectangle width
       height,                       // Source rectangle height
       UnitPixel, 
       &imageAtt);
}
 
bool DrawImageFast(HDC hdc, HBITMAP hBmp, Rect rect, float alpha)
{
    HDC     hMemDC1;
    HBITMAP hOldBitmap;
    
    hMemDC1 = CreateCompatibleDC(hdc);
    Bitmap bit(hBmp,0);
 
    if (hMemDC1){
       // рисуем все что требуется
       hOldBitmap = (HBITMAP)SelectObject(hMemDC1, hBmp);
       Graphics g2(hMemDC1);
       DrawWithAlpha(&bit, &g2, rect.X, rect.Y, rect.Width, rect.Height, alpha);
       // копируем биты
       BitBlt(hdc, rect.X, rect.Y, rect.Width, rect.Height, hMemDC1, 0, 0, SRCCOPY);
       // возвращаем старый bitmap
       SelectObject(hMemDC1, hOldBitmap);
       // освобождаем контекст
       DeleteDC(hMemDC1);
       DeleteObject(hOldBitmap);
    }
    else
    {
       return FALSE;
    }
    return TRUE;
}
p.s. Красота требует жертв!)
1
28.02.2012, 22:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2012, 22:29
Привет! Вот еще темы с ответами:

GDI+. Почему в отдельном потоке картинки сохраняются как белые прямоугольники, а в основном потоке - всё Ок? - Delphi
Всем привет, делаю функцию уменьшения картинок при помощи библиотеки GDI+, в отдельном потоке происходит уменьшение картинки и её...

Участие в Open Source,KDE, проекты, qtbase5-dev и всё всё всё - C++ Qt
Адресовано к разработчикам, кто на линуксе участвует в разработке опен-сорс прог. В общем, началось все как я себе Кубунту 14,04...

на панеле задач каждые 2 минуты появляется значок шестеренки и исчезает, при этом исчезает полноэкранный режим - Windows 7
привет, на ноуте стоит win7, на панеле задач каждые 2 минуты появляется значок шестеренки и исчезает, при этом исчезает полноэкранный...

Acer Aspire M3641 и всё всё всё - Windows XP
Всем привет, эту тему я создал для того что бы понять как правильно установить и настроить драйвера. Летом купил этот компьютер (совершив...


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

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

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