Layout - Resize - SizeChanged / PictureBox_Paint

16/12/2007 - 21:48 von Matthias Göbel | Report spam
... was ist der genaue Unterschied zwischen diesen Ereignissen?
Zumindest für SizeChanged finde ich in der Dokumentation dazu keine Angaben.
Gibt es einen Grund z.B. das Verschieben eines Labels im Layout- anstatt im
Resize-Ereignis zu machen?

Eine 2. Frage:
Wenn ich außerhalb des Paint-Ereignisses in eine PictureBox schreiben will
kann ich dazu Graphics.FromHwnd(ctr.Handle) verwenden.
In der Doku steht dazu es funktioniert nicht wenn das Programm über Netzwerk
ausgeführt wird.
Kann ich Graphics.FromImage ... benutzen? und wie bekomme ich ich die
modifizierte Bitmap dann wieder in die PictureBox?

MfG
Matthias
 

Lesen sie die antworten

#1 Karsten Sosna
17/12/2007 - 06:54 | Warnen spam
... was ist der genaue Unterschied zwischen diesen Ereignissen?
Zumindest für SizeChanged finde ich in der Dokumentation dazu keine
Angaben.


Hallo Matthias,
steht alles in der MSDN.

Gibt es einen Grund z.B. das Verschieben eines Labels im Layout- anstatt
im
Resize-Ereignis zu machen?


Grundsàtzlich sollte man alle Änderungen die das Layout betreffen, und da
gehören nicht nur Größenànderungen dazu, im Layout-Event machen.

Eine 2. Frage:
Wenn ich außerhalb des Paint-Ereignisses in eine PictureBox schreiben
will...



Das Paint-Event bzw. die OnPaint-Methode sind die Stellen wo gezeichnet
werden sollte. Alles andere sind nur temporàre Operationen.
Nur an diesen Stellen bekommst Du mit wann ein Teil des Controls(dazu
gehören auch Formulare, denn Form wurde von Control abgeleitet) neu
gezeichnet werden muss.

...kann ich dazu Graphics.FromHwnd(ctr.Handle) verwenden.



Ja, oder gleich [Control].CreateGraphics benutzen. Dazu siehe
http://www.bobpowell.net/creategraphics.htm.

In der Doku steht dazu es funktioniert nicht wenn das Programm über
Netzwerk
ausgeführt wird.



Wo hast Du das gelesen? Kann ich mir auch nicht vorstellen.

Kann ich Graphics.FromImage ... benutzen? und wie bekomme ich ich die
modifizierte Bitmap dann wieder in die PictureBox?



Anscheinend weist Du noch nicht das einen Unterschied gibt zwischem dem
Image und dem Zeichenvorgang einer PictureBox. Das Zeichnen des Image
übernimmt die PictureBox, zusàtzliche Zeichen-OPs musst Du selber vornehmen.
Wenn Du auf dem Image der PB zeichnen willst brauchst Du sogar
Graphics.FromImage. Nach dem Zeichenvorgang muß Du die PB zum Neuzeichnen
aufforden(siehe [Control].Invalidate), denn die PB zeichnet sich u.a. nur
dann neu wenn das Paint-Event auftritt oder wenn die Image-Eigenschaft
gesetzt. Ob sich der "Inhalt" des Images geàndert hat interessiert die PB
"nicht die Bohne".
Zum Zeichnen selber braucht man keine PictureBox. Ich persönlich mache sehr
viel in Sachen Grafik und habe in meinen ganzen Anwendungen nicht eine
einzige PB im Einsatz. Eine Klasse von Control abgeleitet tut es auch oder
direkt auf einem Formular zeichnen.
Gruß Scotty

Ähnliche fragen