private bool IsValidItem(HistoryItem item)
 {
     return(item != null && !string.IsNullOrEmpty(item.Code) && !string.IsNullOrEmpty(item.NewPrice));
 }
 private void SaveImageToClipboard(HistoryItem item)
 {
     Clipboard.SetImage(ImageHelper.ConvertToBitmapSource(imgPreview));
     AddToHistory(item);
 }
 private void SaveImage(HistoryItem item)
 {
     ImageHelper.SaveToPng(imgPreview, DateTime.Now.ToString("yyyyMMddHHmmssfff") + ".png");
     AddToHistory(item);
 }
        private DrawingImage DrawPreview(HistoryItem item)
        {
            DrawingGroup drawingGroup = new DrawingGroup();

            // Background: Product image
            BitmapImage  image        = new BitmapImage(new Uri(currentItem.ImageSource, UriKind.Relative));
            ImageDrawing imageDrawing = new ImageDrawing(image, new Rect(0, 0, image.Width, image.Height));

            imageDrawing.Freeze();
            drawingGroup.Children.Add(imageDrawing);

            // Rectangle in the center
            GeometryDrawing rectangle      = new GeometryDrawing();
            double          rectRatio      = 0.5;
            double          rectWidth      = image.Width * rectRatio;
            double          rectHeight     = image.Height * rectRatio;
            double          rectX          = (image.Width - rectWidth) / 2;
            double          rectY          = (image.Height - rectHeight) / 2;
            var             rectangleBrush = new SolidColorBrush(Colors.Gray);

            rectangleBrush.Opacity = 0.7;
            rectangle.Brush        = rectangleBrush;
            rectangle.Geometry     = new RectangleGeometry(new Rect(rectX, rectY, rectWidth, rectHeight));
            drawingGroup.Children.Add(rectangle);

            double fontSize   = image.Width * 0.08;
            double lineHeight = fontSize * 1.2;
            double textX      = rectX + fontSize / 10;
            double textY      = rectY + lineHeight / 10;

            // Text inside rectangle
            DrawingVisual visual = new DrawingVisual();

            using (var context = visual.RenderOpen())
            {
                context.DrawText(new FormattedText(item.TimeStamp.ToString("dd/MM/yyyy")
                                                   , CultureInfo.InvariantCulture
                                                   , FlowDirection.LeftToRight
                                                   , new Typeface("Arial")
                                                   , fontSize
                                                   , Brushes.White
                                                   , VisualTreeHelper.GetDpi(this).PixelsPerDip), new Point(textX, textY));

                context.DrawText(new FormattedText((!string.IsNullOrEmpty(item.OldPrice)? item.OldPrice + " => " : "") + item.NewPrice
                                                   , CultureInfo.InvariantCulture
                                                   , FlowDirection.LeftToRight
                                                   , new Typeface("Arial")
                                                   , fontSize
                                                   , Brushes.White
                                                   , VisualTreeHelper.GetDpi(this).PixelsPerDip), new Point(textX, textY + lineHeight));

                if (!string.IsNullOrEmpty(item.Note))
                {
                    context.DrawText(new FormattedText(item.Note
                                                       , CultureInfo.InvariantCulture
                                                       , FlowDirection.LeftToRight
                                                       , new Typeface("Arial")
                                                       , fontSize
                                                       , Brushes.White
                                                       , VisualTreeHelper.GetDpi(this).PixelsPerDip), new Point(textX, textY + 2 * lineHeight));
                }
            }
            drawingGroup.Children.Add(visual.Drawing);

            DrawingImage drawingImage = new DrawingImage(drawingGroup);

            return(drawingImage);
        }