Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Microsoft.Win32;
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Drawing.Imaging;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Documents;
- using System.Windows.Input;
- using System.Windows.Media;
- using System.Windows.Media.Imaging;
- using System.Windows.Navigation;
- namespace aiextractor
- {
- /// <summary>
- /// Interaction logic for MainWindow.xaml
- /// </summary>
- public partial class MainWindow : Window
- {
- int OriginalXSize { get; set; }
- int OriginalYSize { get; set; }
- double ScaledX { get; set; }
- double ScaledY { get; set; }
- double toCropBeginX { get; set; }
- double toCropBeginY { get; set; }
- double toCropEndX { get; set; }
- double toCropEndY { get; set; }
- Bitmap temp;
- public MainWindow()
- {
- InitializeComponent();
- }
- private void btnLoad_Click(object sender, RoutedEventArgs e)
- {
- OpenFileDialog op = new OpenFileDialog();
- op.Title = "Select a picture";
- op.Filter = "All supported graphics|*.jpg;*.jpeg;*.png|" +
- "JPEG (*.jpg;*.jpeg)|*.jpg;*.jpeg|" +
- "Portable Network Graphic (*.png)|*.png";
- if (op.ShowDialog() == true)
- {
- imgPhoto.Source = new BitmapImage(new Uri(op.FileName));
- temp = new Bitmap(op.FileName);
- OriginalXSize = ((System.Windows.Media.Imaging.BitmapSource)imgPhoto.Source).PixelWidth;
- OriginalYSize = ((System.Windows.Media.Imaging.BitmapSource)imgPhoto.Source).PixelHeight;
- }
- }
- private void btnSave_Click(object sender, RoutedEventArgs e)
- {
- }
- System.Windows.Point startPos;
- private void ImgPhoto_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
- {
- startPos = e.GetPosition(imgPhoto);
- }
- private void ImgPhoto_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
- {
- ScaledX = OriginalXSize / imgPhoto.ActualWidth;
- ScaledY = OriginalYSize / imgPhoto.ActualHeight;
- var pos = e.GetPosition(imgPhoto);
- toCropBeginX = pos.X * ScaledX;
- toCropBeginY = pos.Y * ScaledY;
- rect.Margin = new Thickness(startPos.X, startPos.Y, 0, 0);
- rect.HorizontalAlignment = HorizontalAlignment.Left;
- rect.VerticalAlignment = VerticalAlignment.Top;
- var selectedXs = Math.Abs(pos.X - startPos.X);
- var selectedYs = Math.Abs(pos.Y - startPos.Y);
- if (selectedXs > selectedYs)
- {
- rect.Width = selectedXs;
- rect.Height = selectedXs;
- }
- else
- {
- rect.Width = selectedYs;
- rect.Height = selectedYs;
- }
- toCropEndX = rect.Width * ScaledX;
- toCropEndY = rect.Height * ScaledY; // old toCropBeginY + (rect.Width * ScaledY);
- Rectangle destinationRect = new Rectangle((int)toCropBeginX, (int)toCropBeginY, (int)toCropEndX, (int)toCropEndY);
- Bitmap croppedImage = temp.Clone(destinationRect, temp.PixelFormat);
- croppedImage.Save(@"test.png", ImageFormat.Png);
- rect.Fill = new SolidColorBrush(Colors.Red);
- rect.Opacity = 0.25;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement