Text auf ein Bild schreiben und speichern...



  • Hallo

    Ich bin dabei mir ein Progamm zu schreiben, welches Automatisch alle Bilder
    aus einem vorher angegeben Ordner mit einem Text an einer Vorgegebenen Koordinate schreibt.

    Dazu wird das zu beschriftende Bild in eine picture_box geladen und soll dann beschriftet werden.

    Zur zeit hänge ich daran das was ich in PaintEventArgs e eingeben muss.
    Habe mir die Erklärung dazu im .Net 2.0 schon mehrmals durchgelesen. Bin daraus aber nicht ganz schlau geworden.

    Kann mir da jmd helfen?

    MFG

    tewes



  • Du willst die "beschriebenen" Bilder doch dann bestimmt wieder speichern - oder? Eine PictureBox dient im Prinzip ja nur der Anzeige des Bildes. Also holst du dir ein Graphics-Objekt für die Bilddatei (Graphics.FromBitmap oder so), malst dort deinen Text rein. Save()st die Datei wieder und lädst sie dann in die PictureBox.
    Oder hab ich dich etwa falsch verstanden?

    Greetz 🙂



  • Manuel schrieb:

    Du willst die "beschriebenen" Bilder doch dann bestimmt wieder speichern - oder? Eine PictureBox dient im Prinzip ja nur der Anzeige des Bildes. Also holst du dir ein Graphics-Objekt für die Bilddatei (Graphics.FromBitmap oder so), malst dort deinen Text rein. Save()st die Datei wieder und lädst sie dann in die PictureBox.
    Oder hab ich dich etwa falsch verstanden?

    Greetz 🙂

    So habe ich das auch verstanden 🙂



  • Lyrix schrieb:

    Manuel schrieb:

    Du willst die "beschriebenen" Bilder doch dann bestimmt wieder speichern - oder? Eine PictureBox dient im Prinzip ja nur der Anzeige des Bildes. Also holst du dir ein Graphics-Objekt für die Bilddatei (Graphics.FromBitmap oder so), malst dort deinen Text rein. Save()st die Datei wieder und lädst sie dann in die PictureBox.
    Oder hab ich dich etwa falsch verstanden?

    Greetz 🙂

    So habe ich das auch verstanden 🙂

    Sach mal ... erst den Beitrag in dem "Close"-Thread ... okay ... aber hier das is ja wohl die Höhe ... willst du etwa deinen Postings-Zähler hochtreiben? 😉

    Greetz 😃



  • Hallo,

    danke für deine Hilfe.
    So hat ich das gemeint....nur das ich nicht die Graphics.FormBitmap in meinem Programm habe.

    Jetzt habe ich das alles in eine Funktion geschreiben und da taucht auch schon mein nächstest problem auf.
    Ich rufe mit

    schreiben();
    

    die Funktion

    public static void schreiben(PaintEventArgs e)
            {
                //Erstellt einen String in dem der zu schreibende Text steht.
                String drawString = "tewesonline.de.ms";
    
                //Erstellt den "Stift" mit der Farbe und Schriftgröße.
                Font drawFont = new Font("Arial", 16);
                SolidBrush drawBrush = new SolidBrush(Color.Black);
    
                //Erstellt den Punkt wo geschrieben werden soll.
                PointF drawPoint = new PointF(150.0F, 150.0F);
    
                //Schreibt den Text mit den angegeben Werten an die angegebene Stelle.
                Graphics graphic = e.Graphics;
                graphic.DrawString(drawString, drawFont, drawBrush, drawPoint); 
    
            }
    

    auf.
    Aber was muss ich bei "schreiben()" in die Klammern setzten. Was bewirgt das e dort. Habe es schon in vielen beispielen gesehen aber noch keine Erklärung gefunden.

    Mit freundlichen Grüßen,

    tewes



  • Du musst der schreiben-Funktion einen Parameter übergeben. e ist der Name der Variablen bzw. des Funktionsparameters. PaintEventArgs ergibt sich eigentlich durch das Malen auf einem Objekt denke ich mal (schon lange her wo ich mal mit C# gemalt habe), sprich durch das Auslösen eines Events auf einem Objekt zum Zeichnen. Auf jedenfall musst du als Parameter eine Variable vom Typ PaintEventArgs übergeben, z.B.:

    PaintEventArgs pea = new PaintEventArgs(...); // ... durch entsprechende Parameter ersetzen
    /* ... */
    schreiben(pea);
    


  • Hallo Manuel,

    nein eigentlich nicht. Wozu auch?

    Aber naja.... Wollte eigentlich wie es auch in meinem Post hies nur deinen beitrag zustimmen 😉

    MFG



  • Is doch auch okay - fand s nur lustig. War nicht bös gemeint 😉

    Greetz 😃



  • Moin.

    Hab das Programm soweit das beim Compilieren wenigstes keine Fehler mehr kommen. Nur wenn ich das Programm ausführe schreibt es keinen Text auf das Bild.

    public void schreiben()
            {
                this.Paint += new PaintEventHandler(paint);
            }
            //public void Hello() {this.Paint += new PaintEventHandler(f1_paint);}
            private void paint(object sender, PaintEventArgs e)
            {
                //Erstellt einen String in dem der zu schreibende Text steht.
                String drawString = "tewesonline.de.ms";
    
                //Erstellt den "Stift" mit der Farbe und Schriftgröße.
                Font drawFont = new Font("Arial", 16);
                SolidBrush drawBrush = new SolidBrush(Color.DarkRed);
    
                //Erstellt den Punkt wo geschrieben werden soll.
                PointF drawPoint = new PointF(150.0F, 150.0F);
    
                //Schreibt den Text mit den angegeben Werten an die angegebene Stelle.
                Graphics graphic = e.Graphics;
                graphic.DrawString(drawString, drawFont, drawBrush, drawPoint); 
            }
    

    Wo ist der Fehler in meinem Code?

    Danke für die Hilfe

    MFG

    tewes



  • Manuel schrieb:

    Du willst die "beschriebenen" Bilder doch dann bestimmt wieder speichern - oder? Eine PictureBox dient im Prinzip ja nur der Anzeige des Bildes. Also holst du dir ein Graphics-Objekt für die Bilddatei (Graphics.FromBitmap oder so), malst dort deinen Text rein. Save()st die Datei wieder und lädst sie dann in die PictureBox.
    Oder hab ich dich etwa falsch verstanden?

    Greetz 🙂

    Also ich bastel immer noch mit .NET 1.1 aber ich glaube nicht das sich in
    Hinsicht Graphics viel geändert hat!

    Und deshalb guckmal bei Dir in der Hilfe (MSDN) unter

    Graphics GrafikkontextZuBildatei = Graphics.FromImage(....);
    .
    .
    .
    .
    

    nach das gibt es im .NET 1.1 und das sollte auch in 2.0 vorhanden sein!



  • Image img = Image.FromFile("c:\\test.jpg");
    			Graphics gbmp = Graphics.FromImage(img);
    			gbmp.DrawString("Hallo",this.Font,Brushes.Black,0,10);
    			gbmp.Dispose();
    			img.Save("c:\\test0.jpg");
    


  • Cool thx.....mit dem zweiten C#-Code hat es geklappt...

    Danke

    tewes


Anmelden zum Antworten