Autor Beitrag
pupsbär
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Di 20.01.09 23:42 
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.


ausblenden 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"); // Damit habe ich nur das Tif gespeichert nur meine Linien sind nicht mit drauf


Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt
der_Hacker
Hält's aus hier
Beiträge: 9
Erhaltene Danke: 1

XP, Ubuntu und Windows 7(habe auch DSL)
C#(ShapDevelop) und JavaME(Netbeans)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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 :)

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
Graphics g = Graphics.FromImage(pictureBox1.Image);

g.DrawLine ...

pictureBox1.Image.Save ...


Gruß
der_Hacker
Hält's aus hier
Beiträge: 9
Erhaltene Danke: 1

XP, Ubuntu und Windows 7(habe auch DSL)
C#(ShapDevelop) und JavaME(Netbeans)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Do 01.10.09 19:27 
user profile iconder_Hacker hat folgendes geschrieben Zum zitierten Posting springen:
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
Hält's aus hier
Beiträge: 9
Erhaltene Danke: 1

XP, Ubuntu und Windows 7(habe auch DSL)
C#(ShapDevelop) und JavaME(Netbeans)
BeitragVerfasst: Do 01.10.09 20:10 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
InitializeComponent();
pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height); //ohne dem stürzt das prog schon beim starten ab
Graphics ursuppe = Graphics.FromImage(pictureBox1.Image);
ursuppe.FillRectangle(Brushes.White,0,0,pictureBox1.Width,pictureBox1.Height);

//und wenn ich jz klicke wird das ausgeführt -->
ursuppe.FillRectangle(Brushes.Green, x, y, 55);

das rote rechteck zeichnet er mir zwar
aber wenn ich jz klicke stürzts ab =(
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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
Hält's aus hier
Beiträge: 9
Erhaltene Danke: 1

XP, Ubuntu und Windows 7(habe auch DSL)
C#(ShapDevelop) und JavaME(Netbeans)
BeitragVerfasst: 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...

_________________
Wir shishn ja ned weils gsund is ;)
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: 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
ausblenden C#-Quelltext
1:
2:
3:
4:
InitializeComponent();
pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height); //ohne dem stürzt das prog schon beim starten ab
this.ursuppe = Graphics.FromImage(pictureBox1.Image);
this.ursuppe.FillRectangle(Brushes.White,0,0,pictureBox1.Width,pictureBox1.Height);


Bei deinem klick event:
ausblenden C#-Quelltext
1:
this.ursuppe.FillRectangle(Brushes.Green, x, y, 55);