コード例 #1
0
            //---------------------------------------------------------------------------------------------------------
            /// <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;
                    }
                }
            }
コード例 #2
0
            //---------------------------------------------------------------------------------------------------------
            /// <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
            }
コード例 #3
0
            //---------------------------------------------------------------------------------------------------------
            /// <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
            }
コード例 #4
0
ファイル: DxConvert.cs プロジェクト: scjjcs/DirectUI
        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);
        }
コード例 #5
0
ファイル: DxConvert.cs プロジェクト: scjjcs/DirectUI
        //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);
        }
コード例 #6
0
ファイル: D2DGraphics.cs プロジェクト: filipkunc/GLGraphics
        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);
        }