137 lines
3.3 KiB
C#
137 lines
3.3 KiB
C#
using System;
|
|
using System.ComponentModel;
|
|
using System.IO;
|
|
using System.Windows.Media.Imaging;
|
|
|
|
namespace GeekDesk.ViewModel
|
|
{
|
|
[Serializable]
|
|
public class IconInfo : INotifyPropertyChanged
|
|
{
|
|
private string path; //路径
|
|
private string name; //文件名
|
|
private int count = 0; //打开次数
|
|
[field: NonSerialized]
|
|
private BitmapImage bitmapImage; //位图
|
|
private byte[] imageByteArr; //图片 base64
|
|
private string content; //显示信息
|
|
|
|
public int Count
|
|
{
|
|
get
|
|
{
|
|
return count;
|
|
}
|
|
set
|
|
{
|
|
count = value;
|
|
Content = Path + "\n" + Name + "\n使用次数: " + Count;
|
|
OnPropertyChanged("Count");
|
|
}
|
|
}
|
|
|
|
public string Name
|
|
{
|
|
get
|
|
{
|
|
return name;
|
|
}
|
|
set
|
|
{
|
|
name = value;
|
|
Content = Path + "\n" + Name + "\n使用次数: " + Count;
|
|
OnPropertyChanged("Name");
|
|
}
|
|
}
|
|
|
|
public string Path
|
|
{
|
|
get
|
|
{
|
|
return path;
|
|
}
|
|
set
|
|
{
|
|
path = value;
|
|
Content = Path + "\n" + Name + "\n使用次数: " + Count;
|
|
OnPropertyChanged("Path");
|
|
}
|
|
}
|
|
|
|
public BitmapImage BitmapImage
|
|
{
|
|
get
|
|
{
|
|
|
|
return ToImage(ImageByteArr);
|
|
}
|
|
set
|
|
{
|
|
bitmapImage = value;
|
|
ImageByteArr = getJPGFromImageControl(bitmapImage);
|
|
OnPropertyChanged("BitmapImage");
|
|
}
|
|
}
|
|
|
|
public byte[] ImageByteArr
|
|
{
|
|
get
|
|
{
|
|
|
|
return imageByteArr;
|
|
}
|
|
set
|
|
{
|
|
imageByteArr = value;
|
|
OnPropertyChanged("ImageByteArr");
|
|
}
|
|
}
|
|
|
|
public string Content
|
|
{
|
|
get
|
|
{
|
|
return content;
|
|
}
|
|
set
|
|
{
|
|
content = value;
|
|
OnPropertyChanged("Content");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
[field: NonSerializedAttribute()]
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
private void OnPropertyChanged(string propertyName)
|
|
{
|
|
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
|
}
|
|
|
|
public BitmapImage ToImage(byte[] array)
|
|
{
|
|
using (var ms = new System.IO.MemoryStream(array))
|
|
{
|
|
var image = new BitmapImage();
|
|
image.BeginInit();
|
|
image.CacheOption = BitmapCacheOption.OnLoad; // here
|
|
image.StreamSource = ms;
|
|
image.EndInit();
|
|
return image;
|
|
}
|
|
}
|
|
|
|
public byte[] getJPGFromImageControl(BitmapImage bi)
|
|
{
|
|
using (MemoryStream memStream = new MemoryStream())
|
|
{
|
|
PngBitmapEncoder encoder = new PngBitmapEncoder();
|
|
encoder.Frames.Add(BitmapFrame.Create(bi));
|
|
encoder.Save(memStream);
|
|
return memStream.GetBuffer();
|
|
}
|
|
}
|
|
|
|
}
|
|
} |