Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.6 MB
Время: 0.043 c
1-92535
Администратор
2002-10-15 18:40
2002.10.28
Простые числа, Года, Предсказание счастья ( не реклама)%)


1-92505
OMPH!!!
2002-10-18 15:11
2002.10.28
Проигрывание звука звуковой схемы.


1-92566
LongIsland
2002-10-16 18:37
2002.10.28
Беда с TPageControl в Delphi 7


1-92598
I_S_
2002-10-17 10:47
2002.10.28
---|Ветка была без названия|---


3-92367
VitGun
2002-10-07 18:10
2002.10.28
Калькуляция





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский