Nach Hause
Top.Mail.Ru Yandeks.Metrika
Forum: "Haupt";
Aktuelles Archiv: 2002.01.08;
Herunterladen: [xml.tar.bz2];

Nach unten

Warum funktioniert dieser einfache Code nicht ... Finden Sie ähnliche Zweige


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

Es gibt ein Formular TForm1. Darauf befindet sich der "Experimental-Button" BitBtn1.
Es besteht der Wunsch, durch Klicken auf eine andere Schaltfläche - Button1 - Folgendes zu tun:
- Zeichnen Sie mit PaintTo ein BitBtn1-Bild auf einen Canvas-Bitmap-Canvas
- Bringen Sie die resultierende Bitmap zum Umriss des Formulars

KLAPPT NICHT! BitBtn1 wird nicht in Bitmap gezeichnet! WARUM? WO BIN ICH NICHT RECHT?

Prozedur TForm1.FormCreate (Sender: TObject);
beginnen
// Eine Bitmap erstellen
bmp: = TBitmap.Create;
bmp.Width: = 150;
bmp.Height: = 150;
end;

Prozedur TForm1.Button1Click (Sender: TObject);
beginnen
// Wenn Sie auf die Schaltfläche klicken, zeichnen Sie BitBtn1 auf der Canvas-Bitmap
BitBtn1.PaintTo (bmp.Canvas.Handle, 0, 0);
Ungültig machen; // Das Formular wird neu gezeichnet
end;

Prozedur TForm1.FormPaint (Sender: TObject);
beginnen
// Bitmap-Formulare anzeigen
Canvas.Draw (0,0, bmp);
end;



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

А почему Вы:
1) рисуете канвас с помощью PaintTo? Можно напрямую задавать глиф через Canvas.Draw - так будет правильней.
2) перерисовываете форму? нужно всего лишь перерисовать тот контрол который вы обновили, т.е.
oder so:
With BitBtn1 Do
Beginnen
UpDate;
Ungültig machen;
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 для канваса кнопки :((



Seiten: 1 ganze Branche

Forum: "Haupt";
Aktuelles Archiv: 2002.01.08;
Herunterladen: [xml.tar.bz2];

nach oben









Speicher: 0.82 MB
Zeit: 0.028 c
3-21922
Stas
2001-11-29 12:50
2002.01.08
BDE


3-21987
Gut
2001-12-06 08:44
2002.01.08
Rxlib


1-22148
Delphimun
2001-12-20 12:10
2002.01.08
Wie kann ich eine Nachricht an das System senden, dass eine Taste gedrückt wird?


14-22318
Frostbeulen
2001-10-31 17:11
2002.01.08
Rewind


6-22311
BigFoot
2001-10-04 19:27
2002.01.08
Aus der Ferne





Afrikanisch Albanien Arabisch Armenisch Aserbaidschanisch Baskisch Weißrusse Bulgarian katalanisch Chinesisch (vereinfacht) Chinesische Tradition) kroatisch Tschechisch Dänisch Dutch Englisch estnisch Philippinisch Finnish Französisch
Galicisch Georgisch Deutsch Griechisch haitian Creole Hebräisch Hindi ungarisch isländisch Indonesian irisch Italian Japanisch Koreanisch lettisch litauisch Makedonisch Malay Maltesisch Norwegian
persisch Polnisch Portugiesisch Rumänisch Russisch serbisch Slovakisch Slowenisch Spanisch Suaheli Swedish Thai Türkisch Ukrainisch Urdu Vietnamesisch Walisisch Jiddisch Bengalisch bosnisch
cebuano Esperanto Gujarati Hausa Hmong igbo Javanisch kannada khmer Laotisch Lateinisch Maorisch Marathi Mongolisch nepali Pandschabi Somalisch Tamilisch Telugu Yoruba
Zulu
Английский Französisch Deutsch Italienisch Португальский Russisch Spanisch