Форум: "Media";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
ВнизРабота с графикой. Найти похожие ветки
← →
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 вся ветка
Форум: "Media";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.055 c