Home
Top.Mail.Ru Yandeks.Metrika
Forum: "Main";
Current archive: 2002.01.08;
Download: [xml.tar.bz2];

Down

Why doesn't this simple code work ... Find similar branches


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

There is a form TForm1. On it is placed the "experimental button" BitBtn1.
There is a desire, by clicking on another button - Button1 to do the following:
- draw a BitBtn1 image onto a canvas bitmap canvas using PaintTo
- bring the resulting bitmap to the outline of the form

DOES NOT WORK! BitBtn1 is not drawn in bitmap! WHY! WHERE AM I AM NOT RIGHT?

procedure TForm1.FormCreate (Sender: TObject);
begin
// Create a bitmap
bmp: = TBitmap.Create;
bmp.Width: = 150;
bmp.Height: = 150;
end;

procedure TForm1.Button1Click (Sender: TObject);
begin
// When you click on the button, draw BitBtn1 on the canvas bitmap
BitBtn1.PaintTo (bmp.Canvas.Handle, 0, 0);
Invalidate; // To cause the form to be redrawn
end;

procedure TForm1.FormPaint (Sender: TObject);
begin
// Display the bitmap form
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 для канваса кнопки :((



Pages: 1 whole branch

Forum: "Main";
Current archive: 2002.01.08;
Download: [xml.tar.bz2];

Top









Memory: 0.82 MB
Time: 0.027 c
14-22319
iea
2001-11-02 13:34
2002.01.08
Anyone who wears (l) glasses! The question is not idle


4-22481
Stropal
2001-11-03 10:44
2002.01.08
Work printers directly. Advise


1-22082
Chak
2001-12-19 10:07
2002.01.08
How to pass a function parameter in a DLL.


3-21901
Victor
2001-12-06 09:46
2002.01.08
problem with deleting records


14-22400
Hedgehog
2001-11-11 17:10
2002.01.08
And why are all sluggish?





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 Español 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
English French German Italian Portuguese Russian Spanish