private void DrawGrid(WriteableBitmap writeableBitmap) { System.Windows.Media.Color color = Colors.White; color.A = 50; if (OverlayActivated) { if ((SelectedOverlay != null && File.Exists(SelectedOverlay)) || OverlayUseLastCaptured) { if (OverlayUseLastCaptured) { if (File.Exists(ServiceProvider.Settings.SelectedBitmap.FileItem.LargeThumb) && _lastOverlay != ServiceProvider.Settings.SelectedBitmap.FileItem.LargeThumb) { _lastOverlay = ServiceProvider.Settings.SelectedBitmap.FileItem.LargeThumb; _overlayImage = null; } } if (_overlayImage == null) { BitmapImage bitmapSource = new BitmapImage(); bitmapSource.DecodePixelWidth = writeableBitmap.PixelWidth; bitmapSource.BeginInit(); bitmapSource.UriSource = new Uri(OverlayUseLastCaptured ? _lastOverlay : SelectedOverlay); bitmapSource.EndInit(); _overlayImage = BitmapFactory.ConvertToPbgra32Format(bitmapSource); _overlayImage.Freeze(); } int x = writeableBitmap.PixelWidth*OverlayScale/100; int y = writeableBitmap.PixelHeight*OverlayScale/100; int xx = writeableBitmap.PixelWidth*OverlayHorizontal/100; int yy = writeableBitmap.PixelWidth*OverlayVertical/100; System.Windows.Media.Color transpColor = Colors.White; //set color transparency for blit only the alpha chanel is used from transpColor if (OverlayTransparency < 100) transpColor = System.Windows.Media.Color.FromArgb((byte) (0xff*OverlayTransparency/100d), 0xff, 0xff, 0xff); writeableBitmap.Blit( new Rect(0 + (x / 2) + xx, 0 + (y / 2) + yy, writeableBitmap.PixelWidth - x, writeableBitmap.PixelHeight - y), _overlayImage, new Rect(0, 0, _overlayImage.PixelWidth, _overlayImage.PixelHeight), transpColor, WriteableBitmapExtensions.BlendMode.Alpha); } } switch (GridType) { case 1: { for (int i = 1; i < 3; i++) { writeableBitmap.DrawLine(0, (int)((writeableBitmap.Height / 3) * i), (int)writeableBitmap.Width, (int)((writeableBitmap.Height / 3) * i), color); writeableBitmap.DrawLine((int)((writeableBitmap.Width / 3) * i), 0, (int)((writeableBitmap.Width / 3) * i), (int)writeableBitmap.Height, color); } writeableBitmap.SetPixel((int)(writeableBitmap.Width / 2), (int)(writeableBitmap.Height / 2), 128, Colors.Red); } break; case 2: { for (int i = 1; i < 10; i++) { writeableBitmap.DrawLine(0, (int)((writeableBitmap.Height / 10) * i), (int)writeableBitmap.Width, (int)((writeableBitmap.Height / 10) * i), color); writeableBitmap.DrawLine((int)((writeableBitmap.Width / 10) * i), 0, (int)((writeableBitmap.Width / 10) * i), (int)writeableBitmap.Height, color); } writeableBitmap.SetPixel((int)(writeableBitmap.Width / 2), (int)(writeableBitmap.Height / 2), 128, Colors.Red); } break; case 3: { writeableBitmap.DrawLineDDA(0, 0, (int)writeableBitmap.Width, (int)writeableBitmap.Height, color); writeableBitmap.DrawLineDDA(0, (int)writeableBitmap.Height, (int)writeableBitmap.Width, 0, color); writeableBitmap.SetPixel((int)(writeableBitmap.Width / 2), (int)(writeableBitmap.Height / 2), 128, Colors.Red); } break; case 4: { writeableBitmap.DrawLineDDA(0, (int)(writeableBitmap.Height / 2), (int)writeableBitmap.Width, (int)(writeableBitmap.Height / 2), color); writeableBitmap.DrawLineDDA((int)(writeableBitmap.Width / 2), 0, (int)(writeableBitmap.Width / 2), (int)writeableBitmap.Height, color); writeableBitmap.SetPixel((int)(writeableBitmap.Width / 2), (int)(writeableBitmap.Height / 2), 128, Colors.Red); } break; default: break; } if (ShowRuler && NoSettingArea) { int x1 = writeableBitmap.PixelWidth * (HorizontalMin) / 1000; int x2 = writeableBitmap.PixelWidth * (HorizontalMin+HorizontalMax) / 1000; int y2 = writeableBitmap.PixelHeight * (VerticalMin+VerticalMax) / 1000; int y1 = writeableBitmap.PixelHeight * VerticalMin / 1000; writeableBitmap.FillRectangle2(0, 0, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight, System.Windows.Media.Color.FromArgb(128, 128, 128, 128)); writeableBitmap.FillRectangleDeBlend(x1, y1, x2, y2, System.Windows.Media.Color.FromArgb(128, 128, 128, 128)); writeableBitmap.DrawRectangle(x1, y1, x2, y2, color); } }
private void DrawGrid(WriteableBitmap writeableBitmap) { Color color = Colors.White; color.A = 50; if (ShowRuler && NoSettingArea) { int x1 = writeableBitmap.PixelWidth * (HorizontalMin) / 1000; int x2 = writeableBitmap.PixelWidth * (HorizontalMin + HorizontalMax) / 1000; int y2 = writeableBitmap.PixelHeight * (VerticalMin + VerticalMax) / 1000; int y1 = writeableBitmap.PixelHeight * VerticalMin / 1000; writeableBitmap.FillRectangle2(0, 0, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight, Color.FromArgb(128, 128, 128, 128)); writeableBitmap.FillRectangleDeBlend(x1, y1, x2, y2, Color.FromArgb(128, 128, 128, 128)); writeableBitmap.DrawRectangle(x1, y1, x2, y2, color); } }