private void LoadWritableBitamp(BitmapSource bitmap, bool IsWindowInit) { SourceImageWB = new WriteableBitmap(bitmap); DestImageWB = new WriteableBitmap(bitmap); int width = SourceImageWB.PixelWidth; int height = SourceImageWB.PixelHeight; SourceImageControl.Source = SourceImageWB; SourceImageControl.Width = width; SourceImageControl.Height = height; DestImageControl.Source = DestImageWB; DestImageControl.Width = width; DestImageControl.Height = height; SourceImageColorArray = new SimpleColor[height, width]; DestImageColorArray = new SimpleColor[height, width]; Paint.ReadColorsFromBitmap(SourceImageWB, SourceImageColorArray); OriginalSourceImageColorArray = (SimpleColor[, ])SourceImageColorArray.Clone(); if (IsWindowInit == false) { ColorProfileConverter.ConvertImage(SourceImageColorArray, DestImageColorArray, (ColorProfileEnum)SourceColorSpaceComboBox.SelectedIndex, (ColorProfileEnum)DestColorSpaceComboBox.SelectedIndex); Paint.CopyToWriteableBitmap(DestImageWB, DestImageColorArray); } else { TryGenerate(); } }
private void DestColorSpaceComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (IsWindowInitialized == true) { var cb = sender as ComboBox; int selected = cb.SelectedIndex; int from = SourceColorSpaceComboBox.SelectedIndex; DestImageColorProfile = new ColorProfileNotifyChange(ColorProfileFactory.GetFactory().GetColorProfile((ColorProfileEnum)selected)); ColorProfileConverter.ConvertImage(SourceImageColorArray, DestImageColorArray, (ColorProfileEnum)from, (ColorProfileEnum)selected); Paint.CopyToWriteableBitmap(DestImageWB, DestImageColorArray); } }
private bool TryGenerate(bool paint = true) { var isValid = ValidateTextBoxes(); if (isValid.IsSourceValid == false && isValid.IsDestValid == false) { var info = new StringBuilder(); info.AppendLine("Error in source and destination color space!"); MessageBox.Show(info.ToString(), Globals.WindowName, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } else if (isValid.IsSourceValid == false) { var info = new StringBuilder(); info.AppendLine("Error in source color space!"); MessageBox.Show(info.ToString(), Globals.WindowName, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } else if (isValid.IsDestValid == false) { var info = new StringBuilder(); info.AppendLine("Error in destination color space!"); MessageBox.Show(info.ToString(), Globals.WindowName, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } if (SourceImageColorProfile.HasChanged == false && DestImageColorProfile.HasChanged == false) { if (paint == true) { int from = SourceColorSpaceComboBox.SelectedIndex; int to = DestColorSpaceComboBox.SelectedIndex; ColorProfileConverter.ConvertImage(SourceImageColorArray, DestImageColorArray, (ColorProfileEnum)from, (ColorProfileEnum)to); Paint.CopyToWriteableBitmap(DestImageWB, DestImageColorArray); } } else { var sourceValidation = SourceImageColorProfile.Validate(); var destValidation = DestImageColorProfile.Validate(); if (sourceValidation.isValid == false && destValidation.isValid == false) { //error var info = new StringBuilder(); info.AppendLine("Error in source and destination color space:"); info.AppendLine("Source: " + sourceValidation.info); info.Append("Destination: " + destValidation.info); MessageBox.Show(info.ToString(), Globals.WindowName, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } else if (sourceValidation.isValid == false) { //error var info = new StringBuilder(); info.AppendLine("Error in source color space:"); info.Append(sourceValidation.info); MessageBox.Show(info.ToString(), Globals.WindowName, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } else if (destValidation.isValid == false) { //error var info = new StringBuilder(); info.AppendLine("Error in destination color space:"); info.Append(destValidation.info); MessageBox.Show(info.ToString(), Globals.WindowName, MessageBoxButton.OK, MessageBoxImage.Error); return(false); } else { if (paint == true) { ColorProfileConverter.ConvertImage(SourceImageColorArray, DestImageColorArray, SourceImageColorProfile, DestImageColorProfile); Paint.CopyToWriteableBitmap(DestImageWB, DestImageColorArray); } } } return(true); }