Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.18;
Скачать: CL | DM;

Вниз

Рисование на компонентах   Найти похожие ветки 

 
apic ©   (2007-10-20 11:24) [0]

Пытаюсь нарисовать линию на 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);
...
но ничего не получается. Как правильно рисовать на других компонентах?


 
DevilDevil   (2007-10-20 11:42) [1]

попробуй так...

function GetControlCanvas(Control : TControl) : TCanvas;
begin
  Result := nil;
  if (Control = nil) or not(Control is TWinControl) then exit;
 
  Result := TPanel(Control).Canvas;
end;


 
DevilDevil   (2007-10-20 11:44) [2]

кстати говоря, 10 пиксельную линию ты мог не увидеть.
Попробуй так...

TheCanvas.Brush.Color := clRed;
TheCanvas.FillRect(TheCanvas.ClipRect);


 
apic ©   (2007-10-20 12:11) [3]

Спасибо DevilDevil Я писал на OnActive формы! Если бы не твой код
TheCanvas.Brush.Color := clRed;
TheCanvas.FillRect(TheCanvas.ClipRect);

я бы никогда не увидел, что после всего, что я нарисовал, весь внешний вид компонента сбрасывается опять!!! Только мерцание красного цвета заставило пошагово отладить и понять, что к чему. На OnClick все работает!


 
DevilDevil   (2007-10-20 13:19) [4]

рад, что помог


 
apic ©   (2007-10-23 11:29) [5]

Еще вопросик: после вызова TheCanvas.Destroy (в данном случае TheCanvas.Control:=FormMain.Image1), все, что я рисовал на этом канвасе остается, а можно сделать, что бы при удалении этого канваза удалялось все, что я на нем рисовал? Хочу создать, что-то типа слоев над Image.


 
DevilDevil ©   (2007-10-23 11:37) [6]

> apic ©   (23.10.07 11:29) [5]

нет, нельзя.
перед вызовом Destroy, нарисуй на канвасе то, что должно быть.

или...
перед/после вызова Destroy, попробуй FormMain.Image1.Repaint;


 
ЮЮ ©   (2007-10-23 11:40) [7]

>
>
> [5] apic ©   (23.10.07 11:29)
> Еще вопросик: после вызова TheCanvas.Destroy (в данном случае
> TheCanvas.Control:=FormMain.Image1), все, что я рисовал
> на этом канвасе остается, а можно сделать, что бы при удалении
> этого канваза удалялось все, что я на нем рисовал?


Насколько я помню, рисование на канвасе компонента TImage приводит к рисованию на битмаре его Picture.
Зачем было создавать канвас для компонента его и так имеющего?


> Хочу создать, что-то типа слоев над Image.

Могу порекомендлвать TImage32 из библиотеки Graphics32 с его Layers


 
apic ©   (2007-10-23 11:49) [8]

FormMain.Image1.Repaint ПАМАГЛО!!!!!!!!!!!!!!!!


 
apic ©   (2007-10-23 11:52) [9]

Правда все остальные "слои тоже" стерлись :(



Страницы: 1 вся ветка

Текущий архив: 2007.11.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
2-1193493258
antonn
2007-10-27 17:54
2007.11.18
вызов процедуры по адресу


15-1192167505
новый_
2007-10-12 09:38
2007.11.18
class(T..., T...)


2-1192253628
Tos-ka
2007-10-13 09:33
2007.11.18
Послать сообщение из своей программе в чужую


2-1193648940
_max_
2007-10-29 12:09
2007.11.18
аналог split


11-1177267281
optimist
2007-04-22 22:41
2007.11.18
KOL + C++