Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как Bitmap поместить на DC? [D5, D6, WinXP]


Th ©   (2002-10-02 20:20:00) 

Подскажите плз. Есть BMP:HBitmap. Надо в методе Paint компонента вывести этот BMP на компонент. Какой это функцией лучше сделать, а то не хочется лишний DC создавать для BitBlt


SPeller   (2002-10-04 13:38:00) [1]


> 2 SPeller почитай хелп на wm_paint

Передаётся DC на котором ресуют?? Да ради бога. Тогда попробуй обходясь одним этим ДС, не создавая временных, нарисовать битмап на нём.
Удачи.


Evgeny   (2002-10-04 05:18:00) [2]

>Просто вместо CreateCompatibleDC(0) использовал GetDC(0)
Гланды тоже можно удалять через одно место...


Diamond Cat   (2002-10-04 03:28:00) [3]

2 SPellerпочитай хелп на wm_paint


Th   (2002-10-03 18:03:00) [4]

> han_malign (03.10.02 14:41)
> может он про это(а то не понятно что же нужно)

Нет я немного не про это ;)) МЕтодами канваса пользоваться как-то западло, извините за выражение.

Вообще, всем спасибо - проблему я решил. Просто вместо CreateCompatibleDC(0) использовал GetDC(0) из-за ничего не получалось с SelectObject и пришлось искать обходные пути. Сейчас все пашет ;)


han_malign   (2002-10-03 14:41:00) [5]

может он про это(а то не понятно что же нужно)

var bm: TBitmap;
begin
bm.Handle:=BMP;
Canvas.Draw(0,0,bm);
bm.free;
end;


k   (2002-10-03 13:19:00) [6]

в wm_paint передается dc окна, требующего прорисовки
чтоб сделать ч-л с BMP надо сделать его активным на к-н dc,
и оперировать уже с ним


var dc:HDC;
OldHandle:HBITMAP;//старый Handle

dc := GetCompatibleDC(0);
OldHandle := SelectObject(dc, BMP);

//операции копирования BitBlt и т п

SelectObject(dc,OldHandle);// наверное можно и без этого, но хуже не будет
DeleteDC(dc);


Th   (2002-10-03 12:06:00) [7]

А как сразу из битмапа вывести?


Юрий Зотов   (2002-10-03 11:44:00) [8]

А почему не сразу из битмапа?


SPeller   (2002-10-03 10:26:00) [9]


> Юрий Зотов © (03.10.02 02:17)

По-моему всё-таки придётся создать ещё один DC, прикрепить к нему битмап, и из него уже копировать на Canvas.Handle


Юрий Зотов   (2002-10-03 02:17:00) [10]

Canvas.Handle, и ничего создавать не надо.


SPeller   (2002-10-03 01:24:00) [11]


> Diamond Cat © (02.10.02 23:48)

Первый раз о таком слышу.

Вообще, всегда создаётся временный DC и из него копируется на DC который на экран выводит.


Diamond Cat   (2002-10-02 23:48:00) [12]

надо в сообщении wm_paint подменять hdc на свой. не помню точно но вроде это wparam


Наверх

Титульная страница Поиск, карта сайта Написать письмо