Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.015 c
15-1192094854
Prohodil Mimo
2007-10-11 13:27
2007.11.18
Как зайти в меню DSL-модема?


2-1193657824
seoidBar
2007-10-29 14:37
2007.11.18
Кто разбирается в LCD мониторах???


2-1193174372
smartleds
2007-10-24 01:19
2007.11.18
Господа подскажите плз , не пойму в чем ошибка


15-1192303418
ProgRAMmer Dimonych
2007-10-13 23:23
2007.11.18
Вопрос по русскому языку


4-1172489914
Oleg_teacher
2007-02-26 14:38
2007.11.18
Stringgrid + прокрутка




   Наверх