![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Рисование на компонентах [D7, 2000, XP, 2003]
apic © (2007-10-20 11:24:00)Пытаюсь нарисовать линию на TBevel:
...
TheCanvas := TControlCanvas.Create;
TheCanvas.Control:=FormMain.Bevel2;
TheCanvas.FillRect(FormMain.Bevel2.ClientRect);
p.X:=0;
p.Y:=110;
TheCanvas.PenPos:=p;
TheCanvas.LineTo(10, 110);
...
но ничего не получается. Как правильно рисовать на других компонентах?
apic (2007-10-23 11:52:00) [1]Правда все остальные "слои тоже" стерлись :(
apic (2007-10-23 11:49:00) [2]FormMain.Image1.Repaint ПАМАГЛО!!!!!!!!!!!!!!!!
ЮЮ (2007-10-23 11:40:00) [3]>
>
> [5] apic © (23.10.07 11:29)
> Еще вопросик: после вызова TheCanvas.Destroy (в данном случае
> TheCanvas.Control:=FormMain.Image1), все, что я рисовал
> на этом канвасе остается, а можно сделать, что бы при удалении
> этого канваза удалялось все, что я на нем рисовал?
Насколько я помню, рисование на канвасе компонента TImage приводит к рисованию на битмаре его Picture.
Зачем было создавать канвас для компонента его и так имеющего?
> Хочу создать, что-то типа слоев над Image.
Могу порекомендлвать TImage32 из библиотеки Graphics32 с его Layers
DevilDevil (2007-10-23 11:37:00) [4]> apic © (23.10.07 11:29) [5]
нет, нельзя.
перед вызовомDestroy, нарисуй на канвасе то, что должно быть.
или...
перед/после вызоваDestroy, попробуйFormMain.Image1.Repaint;
apic (2007-10-23 11:29:00) [5]Еще вопросик: после вызова TheCanvas.Destroy (в данном случае TheCanvas.Control:=FormMain.Image1), все, что я рисовал на этом канвасе остается, а можно сделать, что бы при удалении этого канваза удалялось все, что я на нем рисовал? Хочу создать, что-то типа слоев над Image.
DevilDevil (2007-10-20 13:19:00) [6]рад, что помог
apic (2007-10-20 12:11:00) [7]Спасибо DevilDevilЯ писал на OnActive формы! Если бы не твой код
TheCanvas.Brush.Color := clRed;
TheCanvas.FillRect(TheCanvas.ClipRect);
я бы никогда не увидел, что после всего, что я нарисовал, весь внешний вид компонента сбрасывается опять!!! Только мерцание красного цвета заставило пошагово отладить и понять, что к чему. На OnClick все работает!
DevilDevil (2007-10-20 11:44:00) [8]кстати говоря, 10 пиксельную линию ты мог не увидеть.
Попробуй так...
TheCanvas.Brush.Color := clRed;
TheCanvas.FillRect(TheCanvas.ClipRect);
DevilDevil (2007-10-20 11:42:00) [9]попробуй так...
function GetControlCanvas(Control : TControl) : TCanvas;
begin
Result := nil;
if (Control = nil) or not(Control is TWinControl) then exit;
Result := TPanel(Control).Canvas;
end;