![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с графикой. [D5, WinME]
Gari © (2002-06-28 09:11:00)Добрый день уважаемые господа. У меня вопрос который возможно уже много раз обсуждался, но все таки прошу Вас помогите.
У меня есть bmp файл, мне нужно его отрисовать на панели. Я знаю что это нужно делать через свойство canvas, но каким макаром? За ранее огромное спасибо.
Gari (2002-07-01 12:27:00) [1]Все получилось. Огромное спасибо за оказанную помощь. Поверте, Вы мне очень помогли.
MBo (2002-07-01 12:01:00) [2]она уже описана для message WM_PAINT еще на уровне twincontrol, так что больше ничего делать не надо
Gari (2002-07-01 11:48:00) [3]А каким образом эта процедура будет вызываться, вот в чем вопрос. Ее же надо вызвать при наступлении какогото то события. Но какого.
MBo (2002-07-01 11:43:00) [4]в объявлении класса
procedure Paint;override;
...
procedure TOwnPanel.Paint;
begin
inherited;
...твое рисование
end;
Gari (2002-07-01 11:33:00) [5]Прошу уточнения, Paint это процедура типа TControl? или еще какая и как ее оформить.
MBo (2002-07-01 11:28:00) [6]в момент выполнения create окна действительно еще нет.
рисовать надо минимум в Сreatewnd, но скорее, в Paint - чтобы не пропадало при перерисовке
Gari (2002-07-01 11:19:00) [7]Беда в том, что когда я в create пытаюсь отрисовать рисунок, Delphi выдает ошибку,(Control "" has no parent window), как я понимаю это не возможность определить обьект на котором пытаюсь рисовать.
MBo (2002-07-01 10:37:00) [8]тогда вопрос упрощается ;)
свой класс- canvas доступен
Gari (2002-07-01 10:00:00) [9]Теперь вопрос более усложнился, а что если мне нужно отобразить картинку на потомке TPanel при его создании. Т.е. я создаю свой компонент с родительским классом TPanel, и при create надо прорисовать картинку. Каким образом это можно сделать.
Мастер Денис (2002-06-28 19:03:00) [10]А что лучше (с точки зрения скорости исполнения и размера кода)использовать этот метод или просто разместить на Panel1 какой-нибудь Image1 и работать с ним.
Skier (2002-06-28 13:44:00) [11]>Gari
No problem.
Мы с тобой одной крови ты и я :))
Gari (2002-06-28 13:41:00) [12]Огромное спасибо за вразумительный ответ.
Skier (2002-06-28 13:35:00) [13]>Gari
Таким образом можно достучаться к любым полям и методам класса
объявленных в разделе protected.
Вообще-то в этом случае лучше писать собственный класс-наследник,
но можно и так...( "за неимением гербовой..." :) ).
Gari (2002-06-28 13:27:00) [14]Все клас, получилось. Огромное спасибо. Но обясните мне, такую тему почему, у унаследованного типа свойство canvas появилось.
Skier (2002-06-28 13:20:00) [15]>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:11:00) [16]Спасибо что написали, но мне нужно отрисовать файл на компоненте с типом TPanel, а у него нет свойства canvas, что мне делать в этом случае?
Skier (2002-06-28 11:37:00) [17]>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;
fnatali (2002-06-28 09:58:00) [18]См. help "canvas" - example