Форум: "Основная";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];
ВнизКак нарисовать что-нибудь на контроле, не имеющем Canvas a? Найти похожие ветки
← →
Romeo (2003-09-30 16:59) [0]Собственно все...
Заранее спасиба
← →
ZEE (2003-09-30 17:02) [1]положить на этот контрол TPaintBox или TImage и на нем нарисовать...
← →
willys (2003-09-30 17:05) [2]смотря что за контрол. если у него есть хендл, то можно получить его DC и рисовать с помощь WinAPI.
← →
Nikolay M. (2003-09-30 17:05) [3]Если Handle окна у контрола имеется, тогда
var
DC : HDC;
begin
DC := GetDC (MyControl.Handle);
try
... // API-функции для работы с DeviceContext
finally
ReleaseDC (DC, MyControl.Handle);
end;
end;
примерно так. ПисАл по памяти, мож где споткнулся...
← →
han_malign (2003-09-30 17:15) [4]> положить на этот контрол TPaintBox или TImage и на нем нарисовать...
- обычно этот "контрол" не является потомком TWinControl и поэтому "положить" на него - не получится.
>Romeo ©
- посмотри реализацию TGraphicControl и/или TCustomControl в Controls.pas и все вопросы отпадут...(ну, немножко методов дописать/перекрыть придется, но на то он и ООП)
← →
han_malign (2003-09-30 17:19) [5]>DC := GetDC (MyControl.Handle);
- если Handle имеется (а у "контролов" он имеется всегда) то можно и не мудрствуя лукаво:
FCanvas := TControlCanvas.Create;
TControlCanvas(FCanvas).Control := Self;
:)))
З.Ы. Хотя с DC тоже поковыряться полезно...
← →
romeo (2003-09-30 17:27) [6]
> han_malign ©
RESPECT
← →
Nikolay M. (2003-09-30 17:32) [7]
> han_malign © (30.09.03 17:19) [5]
Handle - это привилегия T WinControl, а не TControl.
← →
PVOzerski (2003-10-01 17:53) [8]А если это не потомок tWinControl, то фактически он (скорее всего - если только это не окошко, созданное "мимо" VCL) использует DC (=Canvas.Handle) окошка, на котором расположен, надо только пересчитать координаты.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c