//--------------------------------------------------------------------------------------------------------- /// <summary> /// Обновление ресурса Direct2D /// </summary> /// <param name="forced">Принудительное создание ресурса Direct2D</param> //--------------------------------------------------------------------------------------------------------- public override void UpdateDirect2DResource(Boolean forced = false) { if (XDirect2DManager.D2DRenderTarget != null) { // Принудительное создание ресурса if (forced) { XDisposer.SafeDispose(ref mD2DBrush); } if (mD2DBrush == null) { SharpDX.Direct2D1.BitmapBrushProperties bbp = new SharpDX.Direct2D1.BitmapBrushProperties(); bbp.ExtendModeX = (SharpDX.Direct2D1.ExtendMode)mExtendModeX; bbp.ExtendModeY = (SharpDX.Direct2D1.ExtendMode)mExtendModeY; bbp.InterpolationMode = SharpDX.Direct2D1.BitmapInterpolationMode.NearestNeighbor; mD2DBrush = new SharpDX.Direct2D1.BitmapBrush(XDirect2DManager.D2DRenderTarget, XDirect2DManager.LoadFromResource(mResourceName), bbp); mD2DBrush.Transform = SharpDX.Matrix3x2.Scaling(mScale); } else { SharpDX.Direct2D1.BitmapBrush d2d_image_brush = mD2DBrush as SharpDX.Direct2D1.BitmapBrush; d2d_image_brush.Bitmap = XDirect2DManager.LoadFromResource(mResourceName); d2d_image_brush.ExtendModeX = (SharpDX.Direct2D1.ExtendMode)mExtendModeX; d2d_image_brush.ExtendModeY = (SharpDX.Direct2D1.ExtendMode)mExtendModeY; d2d_image_brush.Transform = SharpDX.Matrix3x2.Scaling(mScale); d2d_image_brush.InterpolationMode = SharpDX.Direct2D1.BitmapInterpolationMode.NearestNeighbor; } } }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Изменение режима заполнения кисти. /// Метод автоматически вызывается после установки соответствующего свойства /// </summary> //--------------------------------------------------------------------------------------------------------- protected virtual void RaiseExtendModeChanged() { #if USE_WINDOWS System.Windows.Media.ImageBrush image_brush = mWindowsBrush as System.Windows.Media.ImageBrush; image_brush.TileMode = GetTileMode(); // 2) Информируем об изменении NotifyPropertyChanged(PropertyArgsWindowsBrush); #endif #if USE_GDI if (mDrawingBrush != null) { System.Drawing.TextureBrush gdi_image_brush = mDrawingBrush as System.Drawing.TextureBrush; gdi_image_brush.WrapMode = (System.Drawing.Drawing2D.WrapMode)GetTileMode(); } #endif #if USE_SHARPDX if (mD2DBrush != null) { SharpDX.Direct2D1.BitmapBrush d2d_image_brush = mD2DBrush as SharpDX.Direct2D1.BitmapBrush; d2d_image_brush.ExtendModeX = (SharpDX.Direct2D1.ExtendMode)mExtendModeX; d2d_image_brush.ExtendModeY = (SharpDX.Direct2D1.ExtendMode)mExtendModeY; } #endif }
//--------------------------------------------------------------------------------------------------------- /// <summary> /// Изменение имени ресурса кисти. /// Метод автоматически вызывается после установки соответствующего свойства /// </summary> //--------------------------------------------------------------------------------------------------------- protected virtual void RaiseResourceNameChanged() { #if USE_WINDOWS System.Windows.Media.ImageBrush image_brush = mWindowsBrush as System.Windows.Media.ImageBrush; image_brush.ImageSource = XWindowsLoaderBitmap.LoadBitmapFromResource(Properties.Resources.ResourceManager, mResourceName); image_brush.Viewport = new System.Windows.Rect(0, 0, image_brush.ImageSource.Width, image_brush.ImageSource.Height); // 2) Информируем об изменении NotifyPropertyChanged(PropertyArgsWindowsBrush); #endif #if USE_GDI if (mDrawingBrush != null) { mDrawingBrush.Dispose(); } Object image = Properties.Resources.ResourceManager.GetObject(mResourceName); System.Drawing.Bitmap source = (System.Drawing.Bitmap)image; mDrawingBrush = new System.Drawing.TextureBrush(source, (System.Drawing.Drawing2D.WrapMode)GetTileMode()); #endif #if USE_SHARPDX if (mD2DBrush != null) { SharpDX.Direct2D1.BitmapBrush d2d_image_brush = mD2DBrush as SharpDX.Direct2D1.BitmapBrush; d2d_image_brush.Bitmap = XDirect2DManager.LoadFromResource(mResourceName); } #endif }
public static SharpDX.Direct2D1.BitmapBrush ToBitmapBrush(DUIRenderTarget renderTarget, SharpDX.Direct2D1.Bitmap dxBitmap) { SharpDX.Direct2D1.BitmapBrush bb = new SharpDX.Direct2D1.BitmapBrush(renderTarget, dxBitmap); var extendMode = DxConvert.ToExtendMode(DUIExtendMode.Clamp); bb.ExtendModeX = extendMode; bb.ExtendModeY = extendMode; bb.InterpolationMode = SharpDX.Direct2D1.BitmapInterpolationMode.NearestNeighbor; return(bb); }
//public static SharpDX.Direct2D1.BitmapBrush ToBitmapBrush(DUIRenderTarget renderTarget, Bitmap bitmap) //{ // return new SharpDX.Direct2D1.BitmapBrush(renderTarget, ToBitmap(renderTarget, bitmap)); //} public static SharpDX.Direct2D1.BitmapBrush ToBitmapBrush(DUIRenderTarget renderTarget, DUIBitmapBrush bitmapBrush) { bitmapBrush.Image.RenderTarget = renderTarget; SharpDX.Direct2D1.BitmapBrush bb = new SharpDX.Direct2D1.BitmapBrush(renderTarget, bitmapBrush.Image); var extendMode = DxConvert.ToExtendMode(bitmapBrush.ExtendMode); bb.ExtendModeX = extendMode; bb.ExtendModeY = extendMode; bb.InterpolationMode = SharpDX.Direct2D1.BitmapInterpolationMode.NearestNeighbor; bb.Opacity = bitmapBrush.Opacity; return(bb); }
public override void FillRectangle(Brush brush, RectangleF rect) { var textureBrushCache = _renderTargetCache[_renderTarget].TextureBrushCache; var textureBrush = brush as TextureBrush; SharpDX.Direct2D1.BitmapBrush bitmapBrush; if (!textureBrushCache.TryGetValue(textureBrush, out bitmapBrush)) { Bitmap bitmap = textureBrush.Image as Bitmap; bitmapBrush = new SharpDX.Direct2D1.BitmapBrush(_renderTarget, bitmap.ToD2DBitmap(_renderTarget), new SharpDX.Direct2D1.BitmapBrushProperties { ExtendModeX = SharpDX.Direct2D1.ExtendMode.Wrap, ExtendModeY = SharpDX.Direct2D1.ExtendMode.Wrap, InterpolationMode = SharpDX.Direct2D1.BitmapInterpolationMode.Linear }); textureBrushCache[textureBrush] = bitmapBrush; } _renderTarget.FillRectangle(rect.ToD2DRectangleF(), bitmapBrush); }