Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.28;
Скачать: CL | DM;

Вниз

Работа с графикой.   Найти похожие ветки 

 
Gari   (2002-06-28 09:11) [0]

Добрый день уважаемые господа. У меня вопрос который возможно уже много раз обсуждался, но все таки прошу Вас помогите.
У меня есть bmp файл, мне нужно его отрисовать на панели. Я знаю что это нужно делать через свойство canvas, но каким макаром? За ранее огромное спасибо.


 
fnatali ©   (2002-06-28 09:58) [1]

См. help "canvas" - example


 
Skier ©   (2002-06-28 11:37) [2]

>Gari

Примерно так :


procedure TForm1.Button2Click(Sender: TObject);
var
ABitmap : TBitmap;
begin
ABitmap := TBitmap.Create;
try
ABitmap.LoadFromFile("E:\000\1\Led2on.bmp");
Canvas.Draw(10, 10, ABitmap);
finally
ABitmap.Free;
end; //try
end;


 
Gari   (2002-06-28 13:11) [3]

Спасибо что написали, но мне нужно отрисовать файл на компоненте с типом TPanel, а у него нет свойства canvas, что мне делать в этом случае?


 
Skier ©   (2002-06-28 13:20) [4]

>Gari

Тогда так :


type
THackPanel = class(TPanel);

procedure TForm1.Button2Click(Sender: TObject);
var
ABitmap : TBitmap;
begin
ABitmap := TBitmap.Create;
try
ABitmap.LoadFromFile("E:\000\1\Led2on.bmp");
THackPanel(Panel1).Canvas.Draw(10, 10, ABitmap);
finally
ABitmap.Free;
end; //try
end;


 
Gari   (2002-06-28 13:27) [5]

Все клас, получилось. Огромное спасибо. Но обясните мне, такую тему почему, у унаследованного типа свойство canvas появилось.


 
Skier ©   (2002-06-28 13:35) [6]

>Gari
Таким образом можно достучаться к любым полям и методам класса
объявленных в разделе protected.

Вообще-то в этом случае лучше писать собственный класс-наследник,
но можно и так...( "за неимением гербовой..." :) ).


 
Gari   (2002-06-28 13:41) [7]

Огромное спасибо за вразумительный ответ.


 
Skier ©   (2002-06-28 13:44) [8]

>Gari
No problem.
Мы с тобой одной крови ты и я :))


 
Мастер Денис   (2002-06-28 19:03) [9]

А что лучше (с точки зрения скорости исполнения и размера кода)использовать этот метод или просто разместить на Panel1 какой-нибудь Image1 и работать с ним.


 
Gari   (2002-07-01 10:00) [10]

Теперь вопрос более усложнился, а что если мне нужно отобразить картинку на потомке TPanel при его создании. Т.е. я создаю свой компонент с родительским классом TPanel, и при create надо прорисовать картинку. Каким образом это можно сделать.


 
MBo ©   (2002-07-01 10:37) [11]

тогда вопрос упрощается ;)
свой класс- canvas доступен


 
Gari   (2002-07-01 11:19) [12]

Беда в том, что когда я в create пытаюсь отрисовать рисунок, Delphi выдает ошибку,(Control "" has no parent window), как я понимаю это не возможность определить обьект на котором пытаюсь рисовать.


 
MBo ©   (2002-07-01 11:28) [13]

в момент выполнения create окна действительно еще нет.
рисовать надо минимум в Сreatewnd, но скорее, в Paint - чтобы не пропадало при перерисовке


 
Gari   (2002-07-01 11:33) [14]

Прошу уточнения, Paint это процедура типа TControl? или еще какая и как ее оформить.


 
MBo ©   (2002-07-01 11:43) [15]

в объявлении класса
procedure Paint;override;
...
procedure TOwnPanel.Paint;
begin
inherited;
...твое рисование
end;




 
Gari   (2002-07-01 11:48) [16]

А каким образом эта процедура будет вызываться, вот в чем вопрос. Ее же надо вызвать при наступлении какогото то события. Но какого.


 
MBo ©   (2002-07-01 12:01) [17]

она уже описана для message WM_PAINT еще на уровне twincontrol, так что больше ничего делать не надо


 
Gari   (2002-07-01 12:27) [18]

Все получилось. Огромное спасибо за оказанную помощь. Поверте, Вы мне очень помогли.



Страницы: 1 вся ветка

Текущий архив: 2002.10.28;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
3-92382
Bishop
2002-10-08 10:28
2002.10.28
обновление записей


1-92449
Explorer
2002-10-17 10:25
2002.10.28
Исключения


1-92549
Jony
2002-10-16 13:50
2002.10.28
Как задать цвет шрифта для акт. ячейки в DBGrid1DrawColumnCell?


8-92624
~E~R~R~O~R~
2002-06-15 16:55
2002.10.28
Звук


14-92689
Anatoly Podgoretsky
2002-10-06 12:01
2002.10.28
Наташенька (nata610@pisem.net) с днем рождения