[英]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.