Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Рисование на компонентах [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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо