WPF-ROI控件设计




Title="ROI自定义控件示例"
Width="1200"
Height="650"
Background="#252525"
WindowState="Maximized"
mc:Ignorable="d"
ROIImage
public class ROIImage : INotifyPropertyChanged
{
private ImageSource? _imageSource;
public ImageSource ImageSource
{
get { return _imageSource; }
set
{
_imageSource = value;
RaisePropertyChanged();
}
}
private Rect _roi = Rect.Empty;
public Rect Roi
{
get { return _roi; }
set
{
_roi = value;
RaisePropertyChanged();
}
}
#region – MVVM –
public event PropertyChangedEventHandler PropertyChanged;
public virtual void RaisePropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
MainViewModel
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
namespace WPFROI
{
public class MainViewModel : INotifyPropertyChanged
{
public MainViewModel()
{
var files = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*.png", SearchOption.AllDirectories);
ImageSourceConverter imageSourceConverter = new ImageSourceConverter();
foreach (var file in files)
{
ROIImage rOIImage = new ROIImage();
rOIImage.ImageSource = imageSourceConverter.ConvertFromString(file) as ImageSource;
this.Collection.Add(rOIImage);
}
this.SelectROIImage = this.Collection?.FirstOrDefault();
}
private ObservableCollection<ROIImage> _collection = new ObservableCollection<ROIImage>();
public ObservableCollection<ROIImage> Collection
{
get { return _collection; }
set
{
_collection = value;
RaisePropertyChanged();
}
}
private ROIImage _selectROIImage;
public ROIImage SelectROIImage
{
get { return _selectROIImage; }
set
{
_selectROIImage = value;
RaisePropertyChanged();
}
}
#region – MVVM –
public event PropertyChangedEventHandler PropertyChanged;
public virtual void RaisePropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
#endregion
}
}
ROIControl







