/// <summary> /// /// </summary> /// <param name="gfx"></param> /// <param name="image"></param> /// <param name="dx"></param> /// <param name="dy"></param> /// <param name="db"></param> /// <param name="r"></param> public void Draw(object gfx, XImage image, double dx, double dy, ImmutableArray<ShapeProperty> db, Record r) { var _gfx = gfx as Graphics; var rect = CreateRect( image.TopLeft, image.BottomRight, dx, dy); var srect = new RectangleF( _scaleToPage(rect.X), _scaleToPage(rect.Y), _scaleToPage(rect.Width), _scaleToPage(rect.Height)); if (image.IsFilled) { Brush brush = ToSolidBrush(image.Style.Fill); _gfx.FillRectangle( brush, srect); brush.Dispose(); } if (image.IsStroked) { Pen pen = ToPen(image.Style, _scaleToPage); _gfx.DrawRectangle( pen, srect); pen.Dispose(); } if (_enableImageCache && _biCache.ContainsKey(image.Path)) { _gfx.DrawImage(_biCache[image.Path], srect); } else { if (_state.ImageCache == null || string.IsNullOrEmpty(image.Path)) return; var bytes = _state.ImageCache.GetImage(image.Path); if (bytes != null) { var bi = new Bitmap(bytes); if (_enableImageCache) _biCache[image.Path] = bi; _gfx.DrawImage(bi, srect); if (!_enableImageCache) bi.Dispose(); } } }