Главная страница
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.015 c
15-1192364384
i
2007-10-14 16:19
2007.11.18
IE в висте


2-1193644468
F@T@L_Err0r
2007-10-29 10:54
2007.11.18
Поиск файлов


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


2-1193400497
vajo
2007-10-26 16:08
2007.11.18
Нужно внести изменения в текстовом файле на сайте.


9-1163444466
Romanuh
2006-11-13 22:01
2007.11.18
Помогите с алгоритмом.