예제 #1
0
    /// <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;
    }
예제 #2
0
        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();
            }
        }
예제 #3
0
        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();
            }
        }
예제 #4
0
 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();
 }
예제 #5
0
        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();
            }
        }