Hallo Gemeinde!
Es ist zum Haareraufen -- ich versteh einfach nicht, wie ich mir folgendes Verhalten erklären soll:
Ich leite von einer Basis-Klasse (TGraphicControl) eine neue Klasse ab. Dort möchte ich mit
GDI und
GDI+ (Lib von
Erik van Bilsen) etwas auf dem Canvas zeichnen. Die Verwirrung entsteht nun an folgender Stelle:
Delphi-Quellcode:
procedure TNeueKlasse.DrawColorBar;
var ColorBar : IGPBitmap;
...
Colorbar := TGPBitmap.Create( 450, 80);
Graphics := TGPGraphics.Create( Canvas.Handle );
Graphics.DrawImage( ColorBar, 0, 300 );
Canvas.Brush.Style := bsSolid;
Canvas.Brush.Color := clWhite;
Canvas.FillRect( Rect( 10, 450, 410, 465 ) );
Canvas.Pen.Color := clBlack;
Canvas.Rectangle( Rect( 10, 450, 410, 465 ) );
...
Die unteren 5 Zeilen sollen ein rotes Rechteck mit schwarzer Umrandung zeichnen. Soweit ok.
Aber: Sobald ich die ersten 3 Zeilen auskommentiere sehe ich kein rotes Rechteck mehr!
Dabei haben diese drei Zeilen doch garnichts (?) mit den unteren Zeilen zu tun, oder doch?
In diesen oberen drei Zeilen bereite ich das
GDI+ Zeichnen vor -- da ich es an dieser Stelle aber doch nicht benötige, habe ich es mal auskommentiert und war verbrlüfft, dass auch das normale
GDI Zeichnen nicht mehr wollte. Es wird schlicht nichts gezeichnet.
Kann das jemand erklären?
Vielleicht nocht eine kleine Zusatzfrage:
Betrachten wir nur mal die ersten drei Zeilen. Damit kann ich auf dem Canvas, wo die Basisklasse schon etwas gezeichnet hat, zeichnen -- aber nicht darüberhinaus! Also ich kann kein Rechteck außerhalb dieses Canvas's zeichnen.
Mit den unteren 5 Zeilen hingegen kann ich locker auch darüberhinaus zeichnen. D.h. das
GDI+ ist auf das Canvas der Basisklasse beschränkt, das normal
GDI hingegen nicht. Das ist doch sehr merkwürdig.
Kann mir jemand meine Verwirrung ein wenig helfen zu entwirren?
Lieben Dank & Gruß
Jazzman