Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.048 c
3-1183627926
Jakudza
2007-07-05 13:32
2007.11.18
Произведение по столбцу в FireBird


3-1183896477
Ral'f
2007-07-08 16:07
2007.11.18
DBGrid и DBMemo


11-1177595027
DVK
2007-04-26 17:43
2007.11.18
"Hint" позади формы


2-1193467708
VladimirK
2007-10-27 10:48
2007.11.18
Экспорт в MS Excel


4-1178126275
Альберт
2007-05-02 21:17
2007.11.18
перевод 8 битного битмапа в 24 битный





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский