![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как создать на клиентской части формы БИТМАП (НЕ канву). [D5, Win95/98, WinXP]
xn0bys © (2003-08-29 08:23:00)
Мне нужно добраться до scanlines не используя временный битмап.
У меня есть вот что:
procedure OnPaint;
Var
Temp:TBitmap;
begin
Temp:=TBitmap.Create;
Temp.Width:=ClientWidth;
Temp.Height:=ClientHeight;
...
здесь рисую на временном битмапе (через сканлайны)
...
Canvas.Draw(0,0,Temp);
Temp.free;
end;
А нужно чтоб не использовать Temp.
Я пробовал так:
procedure OnPaint;
Var
DC1, DC2: HDC;
Temp : TBitmap;
begin
Temp:=TBitmap.Create;
DC1:=CreateCompatibleDC(Canvas.Handle);
DC2:=CreateCompatibleBitmap(Canvas.Handle, nil, nil, nil);
Temp.Handle:=DC2;
...
здесь рисую на временном битмапе (через сканлайны)
...
DeleteDC(DC2);
DeleteDC(DC1);
Temp.free;
end;
Так работает быстрее, но почему-то не рисует (ошибки не выдает).
Может я чего не то делаю? Подскажите.
Заранее Спасибо!!!
Крот (2003-09-02 10:22:00) [1]
1. Почему значение, возвращаемое CreateCompabliteBitmap ты помещаешь в переменную типа HDC, ведь возвращается HBITMAP?
2. Где собственно код рисования (в первом примере это Canvas.Draw, а во втором?)
xn0bys (2003-08-29 12:49:00) [2]
Всё равно не рисует!
mrAld (2003-08-29 12:31:00) [3]
Во втором коде что-то мне подсказывает, что ты забыл забыл привязать DC2 к DC1. Сам посуди, DC1 в этом коде не используется.