//protected override void CopyCore()
        //{
        //    try
        //    {
        //        //var width = Source.Width;
        //        //var height = Source.Height;
        //        //var bmpCopied = new RenderTargetBitmap((int)Math.Round(width), (int)Math.Round(height), 96, 96,
        //        //    PixelFormats.Default);
        //        //var dv = new DrawingVisual();
        //        //using (var dc = dv.RenderOpen())
        //        //{
        //        //    var vb = new VisualBrush(dv);
        //        //    dc.DrawRectangle(vb, null, new Rect(new Point(), new Size(width, height)));
        //        //}
        //        //bmpCopied.Render(dv);
        //        //Clipboard.SetImage(bmpCopied);

        //        //var source = (BitmapSource)Source;
        //        //var visual = new DrawingVisual();
        //        //var context = visual.RenderOpen();
        //        //context.DrawImage(Source, new Rect(0.0, 0.0, source.Width, source.Height));
        //        //context.Close();
        //        ////var bitmap = new RenderTargetBitmap(source.PixelWidth, (int)source.PixelHeight, 96.0, 96.0, PixelFormats.Pbgra32);
        //        //var bitmap = new RenderTargetBitmap(source.PixelWidth, (int)source.PixelHeight, 96.0, 96.0, PixelFormats.Default);
        //        //bitmap.Render(visual);
        //        //Clipboard.SetImage(bitmap);

        //        //var img = new BitmapImage();
        //        //var stream = new MemoryStream((byte[]) EditValue);
        //        //{
        //        //    img.BeginInit();
        //        //    img.StreamSource = stream;
        //        //    img.EndInit();
        //        //}
        //        //Clipboard.SetImage(img);

        //        //Clipboard.SetImage(ImageLoader.GetSafeBitmapSource((BitmapSource) Source, ImageEffect));
        //    }
        //        // ReSharper disable once EmptyGeneralCatchClause
        //    catch { }
        //}

        private void OnImageLoading(ImageLoadingEventArgs e)
        {
            var handler = ImageLoading;

            if (handler != null)
            {
                handler(this, e);
            }
        }
        private ImageSource LoadImage()
        {
            var dialog = new OpenFileDialog
            {
                Filter = EditorLocalizer.GetString(EditorStringId.ImageEdit_OpenFileFilter)
            };

            if (dialog.ShowDialog() == true)
            {
                var e = new ImageLoadingEventArgs(dialog.FileName);
                OnImageLoading(e);
                if (e.IsCanceled)
                {
                    return(null);
                }

                using (var stream = dialog.OpenFile())
                {
                    var data = new MemoryStream(stream.GetDataFromStream());
                    return(ImageHelper.CreateImageFromStream(data));
                }
            }
            return(null);
        }