79 lines
2.1 KiB
C#
79 lines
2.1 KiB
C#
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Input;
|
|
using DicomViewer.ViewModels;
|
|
using FellowOakDicom;
|
|
using FellowOakDicom.Imaging;
|
|
using Ookii.Dialogs.Wpf;
|
|
|
|
namespace DicomViewer.Views;
|
|
|
|
/// <summary>
|
|
/// Interaction logic for MainWindow.xaml
|
|
/// </summary>
|
|
public partial class MainWindow
|
|
{
|
|
private readonly MainWindowViewModel _viewModel = new();
|
|
|
|
public MainWindow()
|
|
{
|
|
//TODO::move this somewhere
|
|
new DicomSetupBuilder()
|
|
.RegisterServices(s => s.AddFellowOakDicom().AddImageManager<WinFormsImageManager>())
|
|
.Build();
|
|
|
|
InitializeComponent();
|
|
DataContext = _viewModel;
|
|
}
|
|
|
|
private void OnPreviewMouseWheel(object sender, MouseWheelEventArgs e)
|
|
{
|
|
if (e.Delta < 0)
|
|
{
|
|
((MainWindowViewModel)DataContext).PrevImage();
|
|
}
|
|
else
|
|
{
|
|
((MainWindowViewModel)DataContext).NextImage();
|
|
}
|
|
e.Handled = true;
|
|
}
|
|
|
|
private void OnImageMouseUp(object sender, MouseButtonEventArgs e)
|
|
{
|
|
(int x, int y) = GetPixelIndex(e.GetPosition(Image));
|
|
_viewModel.UpdateCbfPlot(x, y);
|
|
}
|
|
|
|
private void OnImageMouseMove(object sender, MouseEventArgs e)
|
|
{
|
|
(int x, int y) = GetPixelIndex(e.GetPosition(Image));
|
|
|
|
_viewModel.CursorPosition = $"{x}, {y}";
|
|
}
|
|
|
|
private (int x, int y) GetPixelIndex(Point pos)
|
|
{
|
|
if (_viewModel.CurrentImage == null)
|
|
return (0, 0);
|
|
|
|
int x = (int)Math.Floor(pos.X * _viewModel.CurrentImage.Image.PixelWidth / Image.ActualWidth);
|
|
int y = (int)Math.Floor(pos.Y * _viewModel.CurrentImage.Image.PixelHeight / Image.ActualHeight);
|
|
return (x, y);
|
|
}
|
|
|
|
private void OpenButtonOnClick(object sender, RoutedEventArgs e)
|
|
{
|
|
VistaFolderBrowserDialog dialog = new();
|
|
|
|
if (!(dialog.ShowDialog() ?? false))
|
|
return;
|
|
|
|
_viewModel.LoadData(dialog.SelectedPath);
|
|
}
|
|
|
|
private void ToggleButtonOnChecked(object sender, RoutedEventArgs e)
|
|
{
|
|
_viewModel.CurrentImageName = (string)((RadioButton)sender).DataContext;
|
|
}
|
|
} |