Entwickler-Ecke
Multimedia / Grafik - (C#) In Picturebox etwas Zeichnen und speichern.
pupsbär - Di 20.01.09 23:42
Titel: (C#) In Picturebox etwas Zeichnen und speichern.
Hallo!
Ich habe ein kleines Problem.
Ich habe eine Picturebox in diese Lade ich ein TIF Bild. Dann zeichne ich ein paar Linien in die
Picbox über das TIF Bis hier hin funktioniert alles.
Aber wie kann ich jetzt die PictureBOX speichern so das die Linien mit in dem TIF sind (also genau wie auf dem Monitor)
so habe ich die Linien in bzw. auf die Picturebox gezeichnet.
C#-Quelltext
1: 2: 3: 4:
| Graphics grfx = pictureBox1.CreateGraphics(); grfx.DrawLine(Pens.Red, viewx, 0, viewx, height_picbox);
pictureBox1.Image.Save("e:\BLABLA.TIF"); |
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt
der_Hacker - Do 01.10.09 15:58
hast du dafür schon eine lösung gefunden??
ich hab nämlich ein ähnliches problem
ich möchte den inhalt der picturebox innerhalb der exe-datei nur zwischenspeichern
aba irgendwie bring ichs nicht zam...
danielf - Do 01.10.09 16:15
Hallo,
wenn Ihr nicht auf die PictureBox sondern auf das Image zeichnet, sind die Ändernungen synchron mit dem Image Objekt. Die Save-Methode vom Image erledigt den Rest :)
C#-Quelltext
1: 2: 3: 4: 5:
| Graphics g = Graphics.FromImage(pictureBox1.Image);
g.DrawLine ...
pictureBox1.Image.Save ... |
Gruß
der_Hacker - Do 01.10.09 19:07
ok...
ich gebs auf
bitte glaubt jz nich das ich ganz unfähif in programmieren bin
aber ich schaff das mit dem code nicht
wenn ichs nämlich zum "initial_components()" schreib sagt er mir das das image gleich NULL ist und das programm deshalb abstürzt
und wenn ich dem image aber vorher ein bild zuweise dann zeichnet er mir i-wie nix rein
und ich hab echt viele möglichkeiten ausprobiert das problem zu lösen aber ich bin nicht auf die richtige kommen...
kannst du einen code reinstellen mit erklärung wo der hingehört und so??
wär voll leiwand=)
Kha - Do 01.10.09 19:27
der_Hacker hat folgendes geschrieben : |
und wenn ich dem image aber vorher ein bild zuweise dann zeichnet er mir i-wie nix rein |
Nach dem Aufruf von InitializeComponents sollte das funktionieren. Zeig uns doch mal deinen bisherigen Code.
der_Hacker - Do 01.10.09 20:10
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| InitializeComponent(); pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height); Graphics ursuppe = Graphics.FromImage(pictureBox1.Image); ursuppe.FillRectangle(Brushes.White,0,0,pictureBox1.Width,pictureBox1.Height);
ursuppe.FillRectangle(Brushes.Green, x, y, 5, 5); |
das rote rechteck zeichnet er mir zwar
aber wenn ich jz klicke stürzts ab =(
Kha - Do 01.10.09 20:24
Es "stürzt ab"? Gibts dazu auch eine Fehlermeldung? Das "ursuppe" im Button-Handler ist wohl ein Klassenfeld, ist das wirklich gefüllt? Oben sieht es eher aus, als ob du eine gleichnamige lokale Variable deklarierst.
der_Hacker - Do 01.10.09 21:12
sry dass ich keine gute einführung gmacht hab
also
ursuppe = mein Graphic-Objekt
in das will ich was reinzeichnen und jedes mal wenn das passiert soll das gezeichnete zwischengespeichert werden
in der fehlermeldung steht das "ursuppe = NULL" ist und er deshalb nicht drauf zeichenen kann obwohls beim "initialComponents()" ja funktioniert
und das versteh ich nicht...
danielf - Fr 02.10.09 10:10
Kha hat dir ja schon die LÖsung gegeben... lesen solltest du noch selber und wenn du den Unterschied zwischen einer lokalen Variablen und einem Klassenmember nicht kennst, dann solltest du dir vlt. ein C# bzw. allgemein ein OO Buch anschauen.
Gruß Daniel
Tipp: Greif auf Member immer mit this zu, dann wird dein Code lesbarer.
Im Konstruktor
C#-Quelltext
1: 2: 3: 4:
| InitializeComponent(); pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height); this.ursuppe = Graphics.FromImage(pictureBox1.Image); this.ursuppe.FillRectangle(Brushes.White,0,0,pictureBox1.Width,pictureBox1.Height); |
Bei deinem klick event:
C#-Quelltext
1:
| this.ursuppe.FillRectangle(Brushes.Green, x, y, 5, 5); |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!