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

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

Создать вот так канвас [D6, WinXP]


Canvas ©   (2004-07-25 07:42:00) 

почему я не могу просто создать вот так канвас:
cc:=TCanvas.Create;
и сразу на ней рисовать?
почему надо ей hDC присваивать?

без присваивания hDC функции Draw и CopyRect говорят "канвас дро нот аллоу"......

и как присвоить? любой hDC.. (поскольку это врем. объект для хранения врем. инфы)

А?


parovoZZ   (2004-07-25 20:27:00) [1]

Если знаешь хэндл окна, то сможешь узнать его дескриптор, ну а дальше можно делать с кном всё, что душа пожелает. Ну почти всё.


OSokin   (2004-07-25 17:13:00) [2]

CreateDC


Canvas   (2004-07-25 14:17:00) [3]

Псибо.


dmk   (2004-07-25 14:11:00) [4]

CreateBitmap
CreateBitmapIndirect
CreateCompatibleBitmap
CreateDIBitmap
CreateDIBSection

выбор хороший

Или просто TBitmap
у него и канвас есть ;)
и не затирается ничего =)


Gero   (2004-07-25 13:47:00) [5]

Для этого есть bitmap.


Canvas   (2004-07-25 13:40:00) [6]

Ж-)

Да.. на счет этого я тоже в курсе......
и этого:

> хендл канваса и есть HDC, это же просто обертка


но в том  то и дело что мне не нужно конкретное окно..
чужое там.. или мое..
мне нужно просто на время (как в буфер) кусок графики залить..
только,

> чтоб он меня дождался..


dmk   (2004-07-25 13:35:00) [7]

Если вы внимательно посмотрите на исходные функции
WinApi, для которых TCanvas является оберткой,
то увидите, что почти каждой API-функции нужно
указывать контекст(DC) на котором требуется
отрисовка. Можно на ходу менять контекст вывода.
Например:
var
 dc:    hdc;
 mc:    TCanvas;

begin
 dc := GetDC(0);
 mc := TCanvas.Create;
 mc.Handle := dc;
 mc.Ellipse(10, 10, 300, 200);
 ReleaseDC(0, dc);
 dc := GetWindowDC(Self.Handle);
 mc.Handle := dc;
 mc.Ellipse(100, 300, 300, 400);
 mc.Free;
 ReleaseDC(Self.Handle, dc);
end;


Canvas   (2004-07-25 13:33:00) [8]

то есть нет.
у куда потенциально можно вообще записать кусок картинки..
тока чтоб его (если там в буфер) не затерли..

чтоб он меня дождался.. )


14560   (2004-07-25 13:33:00) [9]

хендл канваса и есть HDC, это же просто обертка


Gero   (2004-07-25 12:23:00) [10]


> Canvas   (25.07.04 12:04)

Что значит времменный?
Хэндл по определению это идентефикатор объекта.

И зачем это надо?


Canvas   (2004-07-25 12:04:00) [11]

Это то да..
Но меня интересует именно TCanvas и его Handle...

можно ли получить хэндл не конкретного объекта, а просто..
временный..


Ertong   (2004-07-25 09:47:00) [12]

Создавай Bitmap. И на нем рисуй! У него тоже есть канвас.


Canvas   (2004-07-25 09:32:00) [13]

Как вообще создать пустой временный TCanvas?


Наверх

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