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

Вниз

Почему не работает этот простой код ...   Найти похожие ветки 

 
Kost   (2001-12-15 13:06) [0]

Имеется форма TForm1. На нее помещена "подопытная кнопка" BitBtn1.
Имеется желание, по нажатию на другую кнопку - Button1 сделать следующее:
- нарисовать изображение BitBtn1 на канвас битмэпа с помощью PaintTo
- вывести полученный битмэп на канву формы

НЕ ПОЛУЧАЕТСЯ! BitBtn1 не рисуется в битмэп! ПОЧЕМУ! ГДЕ Я НЕ ПРАВ?

procedure TForm1.FormCreate(Sender: TObject);
begin
//Создаем битмэп
bmp := TBitmap.Create;
bmp.Width := 150;
bmp.Height := 150;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//При нажатии на кнопку рисуем BitBtn1 на канвас битмэпа
BitBtn1.PaintTo(bmp.Canvas.Handle, 0, 0);
Invalidate; //Чтобы вызвать перерисовку формы
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
//Выводим на канву формы битмэп
Canvas.Draw(0,0, bmp);
end;


 
Song   (2001-12-15 22:18) [1]

А почему Вы:
1) рисуете канвас с помощью PaintTo? Можно напрямую задавать глиф через Canvas.Draw - так будет правильней.
2) перерисовываете форму? нужно всего лишь перерисовать тот контрол который вы обновили, т.е.
либо так:
With BitBtn1 Do
Begin
UpDate;
Invalidate;
End;

либо просто BitBtn1.RePaint;


 
Kost   (2001-12-16 12:25) [2]

Я этим примером хотел показать что в битмэп (точнее на канвас битмэпа) невозможно нарисовать TBitBtn (или TButton) с помощью PaintTo.
У WinControl"ов есть такая член-функция
WinControl.PaintTo(DC: HDC; X,Y:integer)
с помощью которой, якобы, можно изображение винконтрола нарисовать на любом канвасе. Я попытался нарисовать изображение кнопки (TBitBtn) на канвасе битмэпа. Не получается. Провел исследования с другими WinControl"ами, получается, например с TPanel. T.e. изображение панели можно, с помощью PaintTo перенести в битмэп. Изображение TBitBtn, повторю, почемуто этой функцией не рисуется в битмэп.
Т.е. эта функция для разных WinControl"ов работает как бог на душу положит.


 
Song   (2001-12-16 22:31) [3]

Я думаю, вся проблема не в PaintTo, а в DС (тип HDC), он в случае с TBitBtn не корректно указывается, т.е. система воозвращает неккоректный handle для канваса кнопки :((



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

Форум: "Основная";
Текущий архив: 2002.01.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
14-22415
Wetnose
2001-11-12 06:42
2002.01.08
Темы для WinXP


4-22490
SergeyDonetsk
2001-11-06 09:22
2002.01.08
как на АПИ можно зная Handle Canvas а задать


3-21944
MVova
2001-12-03 16:50
2002.01.08
Как узнать путь к файлам?


7-22438
Sasha
2001-08-17 16:14
2002.01.08
Голос по модему


3-21947
DieHard
2001-12-05 13:18
2002.01.08
Получение из таблицы Oracle списка индексов





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