GDI+ Frage

Alexander12

Erfahrenes Mitglied
Hi.

Ich habe jetzt Mal Norberts Tutorial duchgelesen, und festgestellt, dass es doch einfacher ist mit GDI+ etwas auf den Bildschirm zu klatschen als Ich dachte.

Doch jetzt auch glich ne Frage:

Code:
void MainFormPaint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen myPen = new Pen(Color.Black);
g.DrawLine(myPen,10,10,100,100);
}

Wie kann Ich da denn machen, dass Ich das per Button auslösen kann, und nicht beim Laden der Form?


MfG Alexander12
 

Alexander Schuc

crazy-weasel
Hi.

Es gäbe bei den Control die Methode CreateGraphics, damit holst dir ein Graphics-Objekt mit dem du zeichnen kannst.
Kannst aber auch einfach Invalidate auf das Control anwenden. Damit wird ein neu zeichnen ausgelöst.
Diese Methode existiert in mehreren Versionen, also schlag gleich mal in der MSDN nach.

Und hier noch ein Link für dich.
Wiedergeben eines Windows Forms-Steuerelements

MfG,
Alex
 

Alexander12

Erfahrenes Mitglied
Hi Alex.

Danke, Falls Ich noch Fragen habe, kann Ich ja posten.

Und Norbert, Ich weiss, suchen nicht vergessen, ja, hehe.


MfG Alexander12
 

Alexander12

Erfahrenes Mitglied
Hi nochmal.

Hat alles geklappt Alex, habs mit dem CreateGraphics Befehl hingekriegt.

Aber wie kann Ich eigentlich die letzte gezeichnete Linie wieder löschen?


MfG Alexander12
 

Alexander Schuc

crazy-weasel
Oh,. hab wohl vergessen zu schreiben, das du bitte zum Zeichnen das Paint-Event benutzen sollst. *g*

Code:
if (drawLine)
  myGraphics.DrawLine(...);

Wenn du im Paint-Event zeichnest hast viel mehr Controlle darüber was wann gezeichnet werden soll. Bei dem Beispiel kannst die boolsche Variable drawLine wann immer du willst auf true oder false setzen. Nach dem Wechsel reicht ein blabla.Invalidate() und je nach Wert ist die Linie da oder nicht.

Solltest du nur mit dem Graphics-Objekt von CreateGraphics zeichnen, bleibt alles solange bis das Control neu gezeichnet wird. Wann das ist, wirst du aber so nicht erfahren, und kannst deswegen nicht drauf reagieren.
 

Alexander12

Erfahrenes Mitglied
Hi.

Oh, Danke das funktioniert jetzt.

Aber Ich hätt da leider noch ne Frage, wie machen das eigentlich Paint und Co mit dem Bild abspeichern. Machen die da ein Screenshot vom Control und speicherns, oder so was?

Würd mich echt Mal interessieren.


MfG Alexander12
 

Alexander12

Erfahrenes Mitglied
Hi.

Code:
public void FromImageImage(PaintEventArgs e)
{
// Create image.
Image imageFile = Image.FromFile("SampImag.jpg");
// Create graphics object for alteration.
Graphics newGraphics = Graphics.FromImage(imageFile);
// Alter image.
newGraphics.FillRectangle(new SolidBrush(Color.Black), 100, 50, 100, 100);
// Draw image to screen.
e.Graphics.DrawImage(imageFile, new PointF(0.0F, 0.0F));
// Release graphics object.
newGraphics.Dispose();
}

Das ist der Code aus der MSDN. Das heißt wenn man Zeichnet, zeichnet man auch gleich in eine Datei, ohne das mans merkt? ;-)


MfG Alexander12
 

Neue Beiträge