Главная страница
    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.54 MB
Время: 2.935 c
3-21946
set
2001-12-05 00:08
2002.01.08
Ещё раз работа с базами


3-21950
Hermit
2001-12-05 11:38
2002.01.08
Неявно стартуемые транзакции


1-22049
greenrul
2001-12-17 18:34
2002.01.08
Как


1-22189
bestix
2001-12-14 19:54
2002.01.08
Метафайлы


4-22459
YUS
2001-11-01 03:13
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский