/// <summary> /// Gets a bitmap with a certain size. /// </summary> /// <param name="width">Pixel width of the bitmap.</param> /// <param name="height">Pixel height of the bitmap.</param> /// <returns>A bitmap that can be used for drawing.</returns> public System.Drawing.Bitmap GetPreviewBitmap(int width, int height) { if (_previewBitmap.GdiBitmap.Width != width || _previewBitmap.GdiBitmap.Height != height) { _previewBitmap.Resize(width, height); _previewPanel.Source = _previewBitmap.WpfBitmap; } return _previewBitmap.GdiBitmap; }
private void EhPreview_SizeChanged(object sender, SizeChangedEventArgs e) { int w = (int)e.NewSize.Width; int h = (int)e.NewSize.Height; if (w > 0 && h > 0 && (w != _previewBitmap.GdiBitmap.Width || h != _previewBitmap.GdiBitmap.Height)) { _previewBitmap.Resize(w, h); m_pnPreview.Source = _previewBitmap.WpfBitmap; InvalidatePreviewPanel(); } }
public void UpdatePreview(BrushX brush) { if (null == _previewPanel || null == brush) { return; } int height = (int)_previewPanel.ActualHeight; int width = (int)_previewPanel.ActualWidth; if (height <= 0) { height = 64; } if (width <= 0) { width = 64; } if (null == _previewBitmap) { _previewBitmap = new GdiToWpfBitmap(width, height); _previewPanel.Source = _previewBitmap.WpfBitmap; } if (width != _previewBitmap.GdiRectangle.Width || height != _previewBitmap.GdiRectangle.Height) { _previewBitmap.Resize(width, height); _previewPanel.Source = _previewBitmap.WpfBitmap; } using (var grfx = _previewBitmap.BeginGdiPainting()) { var fullRect = _previewBitmap.GdiRectangle; grfx.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; grfx.FillRectangle(System.Drawing.Brushes.Transparent, fullRect); grfx.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceOver; var r2 = fullRect; r2.Inflate(-r2.Width / 4, -r2.Height / 4); //grfx.FillRectangle(System.Drawing.Brushes.Black, r2); brush.SetEnvironment(fullRect, BrushX.GetEffectiveMaximumResolution(grfx)); grfx.FillRectangle(brush, fullRect); _previewBitmap.EndGdiPainting(); } }
private void EhPreviewImageSizeChanged(object sender, SizeChangedEventArgs e) { _previewImage.Width = e.NewSize.Width; _previewImage.Height = e.NewSize.Height; if (null == _previewBitmap) { _previewBitmap = new GdiToWpfBitmap((int)e.NewSize.Width, (int)e.NewSize.Height); _previewImage.Source = _previewBitmap.WpfBitmap; } else { _previewBitmap.Resize((int)e.NewSize.Width, (int)e.NewSize.Height); _previewImage.Source = _previewBitmap.WpfBitmap; } UpdatePreview(); }
private void UpdatePreviewPanel() { if (null == _previewPanel || null == _pen) { return; } int height = (int)_previewPanel.ActualHeight; int width = (int)_previewPanel.ActualWidth; if (height <= 0) { height = 64; } if (width <= 0) { width = 64; } if (null == _previewBitmap) { _previewBitmap = new GdiToWpfBitmap(width, height); _previewPanel.Source = _previewBitmap.WpfBitmap; } if (width != _previewBitmap.GdiRectangle.Width || height != _previewBitmap.GdiRectangle.Height) { _previewBitmap.Resize(width, height); _previewPanel.Source = _previewBitmap.WpfBitmap; } using (var grfx = _previewBitmap.BeginGdiPainting()) { var fullRect = _previewBitmap.GdiRectangle; grfx.FillRectangle(System.Drawing.Brushes.White, fullRect); _pen.BrushHolder.SetEnvironment(fullRect, BrushX.GetEffectiveMaximumResolution(grfx)); grfx.DrawLine(_pen, fullRect.Width / 6, fullRect.Height / 2, (fullRect.Width * 5) / 6, fullRect.Height / 2); _previewBitmap.EndGdiPainting(); } }