Главная страница
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
11-1177267281
optimist
2007-04-22 22:41
2007.11.18
KOL + C++


2-1193340746
NikitaNovikov
2007-10-25 23:32
2007.11.18
RoundRect


15-1192223949
Черный Шаман
2007-10-13 01:19
2007.11.18
Запуск 64-битной гостевой ОС в VMWare в Win XP 32-bit.


15-1192080680
vanya_d
2007-10-11 09:31
2007.11.18
Где купить эти книги?


15-1192185959
oldman
2007-10-12 14:45
2007.11.18
Предлагают работу на Оракле (че-то там, связанное с SQL).