Главная страница
    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.55 MB
Время: 0.03 c
4-22499
YUS
2001-10-31 20:51
2002.01.08
FindWindow


1-22132
Leviathan
2001-12-19 19:38
2002.01.08
Спрятать форму


1-22097
Сержик
2001-12-19 15:45
2002.01.08
К чему две кнопки привязать, чтобы они были внизу по центру?


1-22206
T2
2001-12-16 07:11
2002.01.08
Align field


1-22167
Art
2001-12-15 20:56
2002.01.08
Такая вот задачка!!!





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