Вниз
Скачать: CL | DM;

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

 
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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.014 c
3-21997
J
2001-12-05 11:46
2002.01.08
Как создать пользователя с правами как у SYSDBA


1-22229
Man In Red
2001-12-16 14:31
2002.01.08
Опять вопрос связаный с RichEdit!


1-22209
Kost
2001-12-14 14:10
2002.01.08
Пользовался кто нибудь функцией PaintTo для прорисовки WinControl ов на канвас битмэпа? Помогите! У меня ничего не получается.


1-22232
T2
2001-12-16 07:24
2002.01.08
WIN386.SWP


6-22280
rg
2001-10-06 13:26
2002.01.08
Как принять сообщение от Winpopup (Чат для локалки)?




   Наверх