private void IntegerTextBoxCrop_ValueChanged(object sender, DependencyPropertyChangedEventArgs e) { if (!isDragging) { double newLeft = integerTextBoxCropLeft.Value * canvasCropVideo.ActualWidth / mediaInfo.Width; double newTop = integerTextBoxCropTop.Value * canvasCropVideo.ActualHeight / mediaInfo.Height; double newRight = integerTextBoxCropRight.Value * canvasCropVideo.ActualWidth / mediaInfo.Width; double newBottom = integerTextBoxCropBottom.Value * canvasCropVideo.ActualHeight / mediaInfo.Height; double newWidth = canvasCropVideo.ActualWidth - newLeft - newRight; double newHeight = canvasCropVideo.ActualHeight - newTop - newBottom; if (newWidth < RECT_MIN_SIZE || newHeight < RECT_MIN_SIZE) { IntegerTextBox itb = (IntegerTextBox)sender; itb.ValueChanged -= IntegerTextBoxCrop_ValueChanged; itb.Value = (int)e.OldValue; itb.ValueChanged += IntegerTextBoxCrop_ValueChanged; } else { Canvas.SetLeft(rectangleCropVideo, newLeft); Canvas.SetTop(rectangleCropVideo, newTop); rectangleCropVideo.Width = newWidth; rectangleCropVideo.Height = newHeight; textBlockOutputResolution.Text = $"{(mediaInfo.Width - integerTextBoxCropLeft.Value - integerTextBoxCropRight.Value).ToString("0")}x{(mediaInfo.Height - integerTextBoxCropTop.Value - integerTextBoxCropBottom.Value).ToString("0")}"; } } }
private static void OnValueChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { IntegerTextBox integerTextBox = (IntegerTextBox)sender; integerTextBox.RaiseValueChangedEvent(e); }