簡體   English   中英

在自定義類中存儲InkCanvas(?)

[英]Storing InkCanvas in custom class (?)

我正在為我的學生編寫一個簡單的應用程序,但我陷入了工作的中間。 所以,這就是它的意義-這是一個用於管理非常簡單的筆記本的簡單應用。 每個筆記本包含一個文本框和InkCanvas,用戶可以在其中繪制簡單的形狀。 單擊所需的筆記本將其綁定到應用程序中的字段,因此它們會即時更新。 保存是通過xml序列化完成的。

Notebook是一個自定義類,創建一個新類將創建該類的新實例。 這是代碼:

namespace Notes.Classes
{
[Serializable]
public class Notebook : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    [XmlAttribute("Notebook")]
    private string Name;

    [XmlElement("Notebook content")]
    private string Content;

    private DateTime Date;


    #region OnPropertyChanged
    protected void OnPropertyChanged(string info)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(info));
        }
    }
    #endregion

    #region Constructors
    public Notebook(string Name, string Content)
    {
        this.Name = Name;
        this.Date = DateTime.Now;
        if (Content == "")
            this.Content = "Write something";
        else
            this.Content = Content;
    }

    //This is never used private parameterless constructor created only because Serialization required one
    //It is private, so it can't create new notebooks when not needed
    private Notebook()
    {
        this.Name = "bez nazwy";
        this.Content = "bez zawartości";
    }

    #endregion

    [XmlElement("Notebook date")]
    public string GetDate
    {
        get { return Date.ToString(); }
        set { Date = DateTime.Parse(value); OnPropertyChanged("Date"); }
    }

    public string GetName
    {
        get { return Name; }
        set { Name = value; OnPropertyChanged("Name"); }
    }
    public string GetContent
    {
        get { return Content; }
        set { Content = value; OnPropertyChanged("Content"); }
    }

    public string GetPath
    {
        get { return InkPath;}
        set { InkPath = value; OnPropertyChanged("InkPath"); }
    }
   }
 }

現在,我需要做的是以某種方式將InkCanvas Strokes與該類的屬性相關聯,在每次關閉應用程序時將其保存,並在每次選擇其他筆記本時進行加載。 如果我可以簡單地序列化它,那就太酷了。 畫布上沒有花哨的東西,沒有圖像上傳或位圖。 有任何快速有效的方法可以做到這一點嗎?

您只需從InkCanvas保存StrokeCollection StrokeCollection具有一個重載的Save方法 ,您可以使用該方法Stroke數據保存到Stream 從鏈接的“ Save方法”頁面:

FileStream fs = null;

try
{
    fs = new FileStream(inkFileName, FileMode.Create);
    inkCanvas1.Strokes.Save(fs);
}
finally
{
    if (fs != null)
    {
        fs.Close();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM