2016-07-09 8 views
-2

Ich habe (Visual Studio, Windows Form, C#) verwendet, um einige Zeichnungen zu erstellen.Speichern Sie meine Maus Ereigniszeichnung für zukünftige Änderung

Mein Ziel speichert Schaltfläche hinzuzufügen, ist die Zeichnung zu speichern, wie es ist, und wenn ich die gespeicherte Datei in Zukunft öffnen kann ich meine alte Arbeit fortsetzen ...

Was jetzt geschehen ist jedes Mal, wenn ich Visual Studio öffnen Ich muss alles neu zeichnen.

+1

Sie sehen Ihre Zeichnung alle in Reihe setzen können Dan Speichern Sie dieses Array in einer Datei. Das nächste Mal müssen Sie nur diese Datei laden und neu zeichnen. –

+0

Ich benutze Bitmap und Rechteck, um Bilder und Kreise zu zeichnen, ich weiß nicht, wie man sie als Array speichern kann :( –

+1

Das war nur eine Idee. Sie können auch Objektstruktur verwenden und es zu einer Datei serialisieren, zum Beispiel mit BinaryFormatter –

Antwort

1

Die erste Aufgabe ist das Sammeln der Daten, die Sie in einer List<T> zeichnen. sie sehen (alle) my comments here oder Rezas Für Code, wie Antwort here.

Hier zu sammeln ist ein Beispiel & Last einfache PointF Listen speichern können Sie mit Kurven zeichnen:

using System.IO; 
using System.Xml.Serialization; 

// all drawn curve points are collected here: 
List<List<PointF>> curves = new List<List<PointF>>(); 



private void SaveButton_Click(object sender, EventArgs e) 
{ 

    XmlSerializer xmls = new XmlSerializer(typeof(List<List<PointF>>)); 
    using (Stream writer = new FileStream(yourDrawingFileName, FileMode.Create)) 
    { 
     xmls.Serialize(writer, curves); 
     writer.Close(); 
    } 
} 

private void LoadButton_Click(object sender, EventArgs e) 
{ 
    if (File.Exists(yourDrawingFileName)) 
    { 

     XmlSerializer xmls = new XmlSerializer(typeof(List<List<PointF>>)); 
     using (Stream reader = new FileStream(yourDrawingFileName, FileMode.Open)) 
     { 
      var curves_ = xmls.Deserialize(reader); 
      reader.Close(); 
      curves = (List<List<PointF>>) curves_; 
      Console.Write(curves.Count + " curves loaded."); 
     } 
    } 
    yourPanelOrPictureBoxOrForm.Invalidate; 
} 

Wenn Sie möchten, Speichern Sie eine komplexere Klasse von Zeichnungsaktionen, ersetzen Sie PointF durch yourClass. Stellen Sie sicher, dass die Klasse serialisierbar ist! (Points sind in Ordnung, ints und strings natürlich als auch, Colors ein wenig Hilfe brauchen ..)

Für Hinweise, wie eine komplexere Zieh Action-Klasse zu entwerfen here

+0

Vielen Dank, ich werde versuchen und Sie wissen lassen –

+0

Sicher, nehmen Sie sich Zeit und fragen Sie whe Wenn Sie Probleme haben ..! – TaW

Verwandte Themen