static void RaiseForegroundColorChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { Image image = (Image)d; DepPropertyHelper.UnsubscribeFromChanged(image, Image.SourceProperty, RaiseImageSourceChanged); DepPropertyHelper.SubscribeToChanged(image, Image.SourceProperty, RaiseImageSourceChanged); RaiseImageSourceChanged(image, EventArgs.Empty); }
static void RaiseImageSourceChanged(object sender, EventArgs e) { Image image = (Image)sender; DepPropertyHelper.UnsubscribeFromChanged(image, Image.SourceProperty, RaiseImageSourceChanged); System.Drawing.Image drawingImage = ConvertBack(image.Source as BitmapSource); if (drawingImage != null) { Color color = GetForegroundColor(image); if (color != Colors.Transparent) { //drawingImage = ColorMatrixHelper.GrayscaleImage(drawingImage); drawingImage = ColorMatrixHelper.InvertImage(drawingImage); drawingImage = ColorMatrixHelper.ColorizeImage(drawingImage, ConvertColorBack(color)); image.Source = Convert(drawingImage, null); } } DepPropertyHelper.SubscribeToChanged(image, Image.SourceProperty, RaiseImageSourceChanged); }