private async void Button_Click(object sender, RoutedEventArgs e) { FileOpenPicker fo = new FileOpenPicker(); fo.FileTypeFilter.Add(".png"); fo.FileTypeFilter.Add(".jpg"); fo.SuggestedStartLocation = PickerLocationId.Desktop; var file = await fo.PickSingleFileAsync(); if (file != null) { Cropper.Reset(); Canvas.Reset(); await Cropper.SetSourceAsync(file); Canvas.SetFile(file); Canvas.SetSource(Cropper._software); Canvas.SetRect(Cropper.CropRectangle); //if (!_hasMessageContext) //TODO: Fix mask bug, remove hack (#2017 references mask position) //{ // await Cropper.SetSourceAsync(_media.File, _media.EditState.Rotation, _media.EditState.Flip, _media.EditState.Proportions, _media.EditState.Rectangle); // Cropper.SetProportions(_media.EditState.Proportions); //} //Cropper.IsCropEnabled = true; } }
private async void Rotate_Click(object sender, RoutedEventArgs e) { var rotation = BitmapRotation.None; var proportions = RotateProportions(Cropper.Proportions); var rectangle = RotateArea(Cropper.CropRectangle); switch (_rotation) { case BitmapRotation.None: rotation = BitmapRotation.Clockwise90Degrees; break; case BitmapRotation.Clockwise90Degrees: rotation = BitmapRotation.Clockwise180Degrees; break; case BitmapRotation.Clockwise180Degrees: rotation = BitmapRotation.Clockwise270Degrees; break; } _rotation = rotation; await Cropper.SetSourceAsync(_file, rotation, _flip, proportions, rectangle); Rotate.IsChecked = _rotation != BitmapRotation.None; Canvas.Invalidate(); }
private async void Cancel_Click(object sender, RoutedEventArgs e) { if (CropToolbar != null && CropToolbar.Visibility == Visibility.Visible) { // Reset Cropper await Cropper.SetSourceAsync(_media.File, _media.EditState.Rotation, _media.EditState.Flip, _media.EditState.Proportions, _media.EditState.Rectangle); _rotation = _media.EditState.Rotation; _flip = _media.EditState.Flip; Crop.IsChecked = IsCropped(Cropper.CropRectangle); ResetUiVisibility(); } else if (DrawToolbar != null && DrawToolbar.Visibility == Visibility.Visible) { Canvas.RestoreState(); ResetUiVisibility(); SettingsService.Current.Pencil = DrawSlider.GetDefault(); } else { if (_media is StorageMedia) { _media.EditState = _originalMediaEditState; // Reset to state before starting editing } if (_media is StorageVideo video) { video.IsMuted = _originalVideoIsMuted; video.Compression = _originalVideoCompression; } ResetUiVisibility(); Hide(ContentDialogResult.Secondary); } }
private async void AccepscdtButton_Click(object sender, RoutedEventArgs e) { FileOpenPicker fo = new FileOpenPicker(); fo.FileTypeFilter.Add(".png"); fo.FileTypeFilter.Add(".jpg"); fo.SuggestedStartLocation = PickerLocationId.Desktop; var file = await fo.PickSingleFileAsync(); if (file != null) { ResetUI(); Cropper.Reset(); Canvas.Reset(); await Cropper.SetSourceAsync(file); Canvas.SetFile(file); Canvas.SetSource(Cropper._software); Canvas.SetRect(Cropper.CropRectangle); DisbaleCloseButton(); CropMode(true, false); } }
public EditYourPhotoView(StorageFile file) { InitializeComponent(); //_inkPresenter = Canvas.InkPresenter; //_inkPresenter.InputDeviceTypes = CoreInputDeviceTypes.Mouse | CoreInputDeviceTypes.Pen | CoreInputDeviceTypes.Touch; Loaded += async(s, args) => { await Cropper.SetSourceAsync(file); }; }
public EditMediaPopup(StorageMedia media, ImageCropperMask mask = ImageCropperMask.Rectangle) { InitializeComponent(); Canvas.Strokes = media.EditState.Strokes; Cropper.SetMask(mask); Cropper.SetProportions(mask == ImageCropperMask.Ellipse ? BitmapProportions.Square : media.EditState.Proportions); if (mask == ImageCropperMask.Ellipse) { Proportions.IsChecked = true; Proportions.IsEnabled = false; } _file = media.File; _media = media; Loaded += async(s, args) => { if (mask == ImageCropperMask.Ellipse) { await Cropper.SetSourceAsync(media.File, proportions : BitmapProportions.Square); } else { await Cropper.SetSourceAsync(media.File, media.EditState.Rotation, media.EditState.Flip, media.EditState.Proportions, media.EditState.Rectangle); } }; Unloaded += (s, args) => { Media.Source = null; }; if (mask == ImageCropperMask.Ellipse && string.Equals(media.File.FileType, ".mp4", StringComparison.OrdinalIgnoreCase)) { FindName(nameof(TrimToolbar)); TrimToolbar.Visibility = Visibility.Visible; BasicToolbar.Visibility = Visibility.Collapsed; InitializeVideo(media.File); } }
public EditMediaPopup(StorageFile file, BitmapProportions proportions = BitmapProportions.Custom, ImageCropperMask mask = ImageCropperMask.Rectangle) { InitializeComponent(); Cropper.SetMask(mask); Cropper.SetProportions(proportions); if (proportions != BitmapProportions.Custom) { Proportions.IsChecked = true; Proportions.IsEnabled = false; } _file = file; Loaded += async(s, args) => { await Cropper.SetSourceAsync(file, proportions : proportions); }; }
public EditMediaPopup(StorageMedia media) { InitializeComponent(); Canvas.Strokes = media.EditState.Strokes; Cropper.SetMask(ImageCropperMask.Rectangle); Cropper.SetProportions(media.EditState.Proportions); if (media.EditState.Proportions != BitmapProportions.Custom) { Proportions.IsChecked = true; Proportions.IsEnabled = true; } _file = media.File; _media = media; Loaded += async(s, args) => { await Cropper.SetSourceAsync(media.File, media.EditState.Rotation, media.EditState.Flip, media.EditState.Proportions, media.EditState.Rectangle); }; }
private async void Flip_Click(object sender, RoutedEventArgs e) { var flip = _flip; var rotation = _rotation; var proportions = Cropper.Proportions; var rectangle = FlipArea(Cropper.CropRectangle); switch (rotation) { case BitmapRotation.Clockwise90Degrees: case BitmapRotation.Clockwise270Degrees: switch (flip) { case BitmapFlip.None: flip = BitmapFlip.Vertical; break; case BitmapFlip.Vertical: flip = BitmapFlip.None; break; case BitmapFlip.Horizontal: flip = BitmapFlip.None; rotation = rotation == BitmapRotation.Clockwise90Degrees ? BitmapRotation.Clockwise270Degrees : BitmapRotation.Clockwise90Degrees; break; } break; case BitmapRotation.None: case BitmapRotation.Clockwise180Degrees: switch (flip) { case BitmapFlip.None: flip = BitmapFlip.Horizontal; break; case BitmapFlip.Horizontal: flip = BitmapFlip.None; break; case BitmapFlip.Vertical: flip = BitmapFlip.None; rotation = rotation == BitmapRotation.None ? BitmapRotation.Clockwise180Degrees : BitmapRotation.None; break; } break; } _flip = flip; _rotation = rotation; await Cropper.SetSourceAsync(_file, _rotation, flip, proportions, rectangle); //Transform.ScaleX = _flip == BitmapFlip.Horizontal ? -1 : 1; //Transform.ScaleY = _flip == BitmapFlip.Vertical ? -1 : 1; Flip.IsChecked = _flip != BitmapFlip.None; Canvas.Invalidate(); }
public EditMediaPopup(StorageMedia media, ImageCropperMask mask = ImageCropperMask.Rectangle, bool ttl = false) { InitializeComponent(); Canvas.Strokes = media.EditState.Strokes; Cropper.SetMask(mask); if (mask == ImageCropperMask.Ellipse) { _hasMessageContext = false; media.EditState.Proportions = BitmapProportions.Square; } Cropper.SetProportions(media.EditState.Proportions); _file = media.File; _media = media; _originalMediaEditState = CopyBitmapEditState(media.EditState); Loaded += async(s, args) => { await Cropper.SetSourceAsync(media.File, media.EditState.Rotation, media.EditState.Flip, media.EditState.Proportions, media.EditState.Rectangle); if (!_hasMessageContext) //TODO: Fix mask bug, remove hack (#2017 references mask position) { await Cropper.SetSourceAsync(_media.File, _media.EditState.Rotation, _media.EditState.Flip, _media.EditState.Proportions, _media.EditState.Rectangle); Cropper.SetProportions(_media.EditState.Proportions); } Cropper.IsCropEnabled = !_hasMessageContext && _media.IsVideo; }; Unloaded += (s, args) => { Media.Source = null; }; #region Init UI if (mask == ImageCropperMask.Ellipse && string.Equals(media.File.FileType, ".mp4", StringComparison.OrdinalIgnoreCase)) { FindName(nameof(TrimToolbar)); TrimToolbar.Visibility = Visibility.Visible; BasicToolbar.Visibility = Visibility.Collapsed; SeparatorLeft.Visibility = Visibility.Collapsed; SeparatorRight.Visibility = Visibility.Collapsed; InitializeVideo(media.File); } if (_media is StorageVideo video) { _originalVideoCompression = video.Compression; _originalVideoIsMuted = video.IsMuted; Mute.IsChecked = video.IsMuted; Mute.Visibility = Visibility.Visible; Compress.IsChecked = video.Compression != video.MaxCompression; Compress.Visibility = video.CanCompress ? Visibility.Visible : Visibility.Collapsed; if (video.CanCompress) { Compress.Glyph = new CompressionToGlyphConverter().Convert(video.Compression, typeof(string), null, video.MaxCompression.ToString()).ToString(); Compress.CheckedGlyph = Compress.Glyph; Compress.IsChecked = video.Compression != video.MaxCompression; } } else { Mute.Visibility = Visibility.Collapsed; Compress.Visibility = Visibility.Collapsed; } Crop.Visibility = _media is StoragePhoto ? Visibility.Visible : Visibility.Collapsed; Draw.Visibility = Crop.Visibility; Ttl.Visibility = ttl ? Visibility.Visible : Visibility.Collapsed; Ttl.IsChecked = _media.Ttl > 0; if (_media.EditState is BitmapEditState editSate) { Crop.IsChecked = editSate.Proportions != BitmapProportions.Custom || editSate.Flip != BitmapFlip.None || editSate.Rotation != BitmapRotation.None || (!editSate.Rectangle.IsEmpty && (editSate.Rectangle.X > 0 || editSate.Rectangle.Y > 0 || Math.Abs(editSate.Rectangle.Width - 1) > 0.1f || Math.Abs(editSate.Rectangle.Height - 1) > 0.1f)); Draw.IsChecked = editSate.Strokes != null && editSate.Strokes.Count > 0; } else { Crop.IsChecked = false; Draw.IsChecked = false; } if (_hasMessageContext) { if (!string.IsNullOrWhiteSpace(media.Caption?.Text)) { CaptionInput.SetText(media.Caption); } } else { CaptionInput.Visibility = Visibility.Collapsed; } #endregion }