Пример #1
0
        private BitmapBrush CreateDirectBrush(
            ImageBrush brush,
            SharpDX.Direct2D1.RenderTarget target,
            Bitmap image, 
            Rect sourceRect, 
            Rect destinationRect)
        {
            var tileMode = brush.TileMode;
            var scale = brush.Stretch.CalculateScaling(destinationRect.Size, sourceRect.Size);
            var translate = CalculateTranslate(brush, sourceRect, destinationRect, scale);
            var transform = Matrix.CreateTranslation(-sourceRect.Position) *
                Matrix.CreateScale(scale) *
                Matrix.CreateTranslation(translate);

            var opts = new BrushProperties
            {
                Transform = transform.ToDirect2D(),
                Opacity = (float)brush.Opacity,
            };

            var bitmapOpts = new BitmapBrushProperties
            {
                ExtendModeX = GetExtendModeX(tileMode),
                ExtendModeY = GetExtendModeY(tileMode),                
            };

            return new BitmapBrush(target, image, bitmapOpts, opts);
        }
Пример #2
0
        /// <summary>
        /// Create the grid pattern (squares) brush
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        BitmapBrush CreateGridPatternBrush(RenderTarget target)
        {
            // Create a compatible render target.
            BitmapRenderTarget compatibleRenderTarget =
                target.CreateCompatibleRenderTarget(CompatibleRenderTargetOptions.None, new SizeF(10.0f, 10.0f));

            //// Draw a pattern.
            SolidColorBrush spGridBrush = compatibleRenderTarget.CreateSolidColorBrush(new ColorF(0.93f, 0.94f, 0.96f, 1.0f));

            compatibleRenderTarget.BeginDraw();
            compatibleRenderTarget.FillRectangle(new RectF(0.0f, 0.0f, 10.0f, 1.0f), spGridBrush);
            compatibleRenderTarget.FillRectangle(new RectF(0.0f, 0.1f, 1.0f, 10.0f), spGridBrush);
            compatibleRenderTarget.EndDraw();

            //// Retrieve the bitmap from the render target.
            D2DBitmap spGridBitmap;

            spGridBitmap = compatibleRenderTarget.Bitmap;

            //// Choose the tiling mode for the bitmap brush.
            BitmapBrushProperties brushProperties = new BitmapBrushProperties(ExtendMode.Wrap, ExtendMode.Wrap, BitmapInterpolationMode.Linear);

            //// Create the bitmap brush.
            return(renderTarget.CreateBitmapBrush(spGridBitmap, brushProperties));
        }
Пример #3
0
        private BitmapBrush CreateDirectBrush(
            ImageBrush brush,
            SharpDX.Direct2D1.RenderTarget target,
            Bitmap image,
            Rect sourceRect,
            Rect destinationRect)
        {
            var tileMode  = brush.TileMode;
            var scale     = brush.Stretch.CalculateScaling(destinationRect.Size, sourceRect.Size);
            var translate = CalculateTranslate(brush, sourceRect, destinationRect, scale);
            var transform = Matrix.CreateTranslation(-sourceRect.Position) *
                            Matrix.CreateScale(scale) *
                            Matrix.CreateTranslation(translate);

            var opts = new BrushProperties
            {
                Transform = transform.ToDirect2D(),
                Opacity   = (float)brush.Opacity,
            };

            var bitmapOpts = new BitmapBrushProperties
            {
                ExtendModeX = GetExtendModeX(tileMode),
                ExtendModeY = GetExtendModeY(tileMode),
            };

            return(new BitmapBrush(target, image, bitmapOpts, opts));
        }
Пример #4
0
 public D2DSpriteBitmapBrush(D2DSpriteBatch batch, D2DSpriteBitmap bitmap, BitmapBrushProperties bbp)
 {
     this._bitmap = bitmap;
     this._batch  = batch;
     this._bitmapBrushProperties = bbp;
     this.Brush = new BitmapBrush(batch.DWRenderTarget, this._bitmap, bbp);
     this._batch.BatchDisposing += _batch_BatchDisposing;
 }
Пример #5
0
        internal override void Create()
        {
            if (NativeBrush != null)
            {
                NativeBrush.Dispose();
            }

            m_bitmap.Create();
            var props = new BitmapBrushProperties();

            props.InterpolationMode = BitmapInterpolationMode.Linear;
            NativeBrush             = new BitmapBrush(Owner.D2dRenderTarget, m_bitmap.NativeBitmap, props);

            ExtendModeX       = m_extendModeX;
            ExtendModeY       = m_extendModeY;
            InterpolationMode = D2dBitmapInterpolationMode.Linear;
            Location          = m_location;
            Bitmap            = m_bitmap;
        }
Пример #6
0
        /// <summary>
        /// Create the grid pattern (squares) brush 
        /// </summary>
        /// <param name="target"></param>
        /// <returns></returns>
        BitmapBrush CreateGridPatternBrush(RenderTarget target)
        {

            // Create a compatible render target.
            BitmapRenderTarget compatibleRenderTarget =
                target.CreateCompatibleRenderTarget(CompatibleRenderTargetOptions.None, new SizeF(10.0f, 10.0f));

            //// Draw a pattern.
            SolidColorBrush spGridBrush = compatibleRenderTarget.CreateSolidColorBrush(new ColorF(0.93f, 0.94f, 0.96f, 1.0f));
            compatibleRenderTarget.BeginDraw();
            compatibleRenderTarget.FillRectangle(new RectF(0.0f, 0.0f, 10.0f, 1.0f), spGridBrush);
            compatibleRenderTarget.FillRectangle(new RectF(0.0f, 0.1f, 1.0f, 10.0f), spGridBrush);
            compatibleRenderTarget.EndDraw();

            //// Retrieve the bitmap from the render target.
            D2DBitmap spGridBitmap;
            spGridBitmap = compatibleRenderTarget.Bitmap;

            //// Choose the tiling mode for the bitmap brush.
            BitmapBrushProperties brushProperties = new BitmapBrushProperties(ExtendMode.Wrap, ExtendMode.Wrap, BitmapInterpolationMode.Linear);
            //// Create the bitmap brush.
            return renderTarget.CreateBitmapBrush(spGridBitmap, brushProperties);
        }
Пример #7
0
        internal override void Create()
        {
            if (NativeBrush != null)
                NativeBrush.Dispose();

            m_bitmap.Create();
            var props = new BitmapBrushProperties();
            props.InterpolationMode = BitmapInterpolationMode.Linear;
            NativeBrush = new BitmapBrush(Owner.D2dRenderTarget, m_bitmap.NativeBitmap, props);

            ExtendModeX = m_extendModeX;
            ExtendModeY = m_extendModeY;
            InterpolationMode = D2dBitmapInterpolationMode.Linear;
            Location = m_location;
            Bitmap = m_bitmap;
        }
Пример #8
0
 private static void ConfigureBitmapBrush(out BitmapBrushProperties description)
 {
     description.InterpolationMode = BitmapInterpolationMode.Linear;
     description.ExtendModeX = ExtendMode.Wrap;
     description.ExtendModeY = ExtendMode.Wrap;
 }
Пример #9
0
 public D2DSpriteBitmapBrush CreateBitmapBrush(Stream fileStream, BitmapBrushProperties bbp = new BitmapBrushProperties())
 {
     return(new D2DSpriteBitmapBrush(this, CreateBitmap(fileStream), bbp));
 }
Пример #10
0
 public D2DSpriteBitmapBrush CreateBitmapBrush(string fileName, BitmapBrushProperties bbp = new BitmapBrushProperties())
 {
     return(new D2DSpriteBitmapBrush(this, CreateBitmap(fileName), bbp));
 }
Пример #11
0
 BrushAsset IAssetManager.LoadBrush(Bitmap bitmap, BitmapBrushProperties? bitmapProps, BrushProperties? brushProps)
 {
     return _assetManager.LoadBrush(bitmap, bitmapProps, brushProps);
 }
Пример #12
0
 public BitmapBrushDescription(Bitmap bitmap, BitmapBrushProperties? bitmapProps, BrushProperties? brushProps)
 {
     Bitmap = bitmap;
     BitmapBrushProps = bitmapProps;
     BrushProps = brushProps;
 }
Пример #13
0
 BrushAsset IAssetManager.LoadBrush(Bitmap bitmap, BitmapBrushProperties? bitmapBrushProps, BrushProperties? brushProps)
 {
     /// TODFO: THis needs to be finished!!!!
     BitmapBrush brush = new BitmapBrush(RenderTarget2D, bitmap, bitmapBrushProps, brushProps);
     return new BrushAsset(brush);
 }
Пример #14
0
        public static Brush GetPatternBrush(RenderTarget renderTarget, System.Drawing.Color fillColor, float opacity, xPFT.Charting.Base.FillPattern fillPattern, float patternSize = 10)
        {
            if (renderTarget != null)
            {
                BitmapRenderTarget brt = new BitmapRenderTarget(renderTarget, CompatibleRenderTargetOptions.None, new SharpDX.Size2F(patternSize, patternSize));
                Brush tempBrush        = new SolidColorBrush(brt, xPFT.DrawingBase.Convertor.ColorConvertor(fillColor, opacity));
                if (fillPattern == xPFT.Charting.Base.FillPattern.Solid)
                {
                    return(tempBrush);
                }
                brt.BeginDraw();
                brt.Clear(Color.Transparent);
                switch (fillPattern)
                {
                case xPFT.Charting.Base.FillPattern.Hachure_Double:
                    brt.DrawLine(new SharpDX.Vector2(0, 0), new SharpDX.Vector2(patternSize, patternSize), tempBrush, 1);
                    brt.DrawLine(new SharpDX.Vector2(patternSize, 0), new SharpDX.Vector2(0, patternSize), tempBrush, 1);
                    break;

                case xPFT.Charting.Base.FillPattern.Hachure:
                    brt.DrawLine(new SharpDX.Vector2(patternSize, 0), new SharpDX.Vector2(0, patternSize), tempBrush, 0.5f);
                    break;

                case xPFT.Charting.Base.FillPattern.Hashure_Back:
                    brt.DrawLine(new SharpDX.Vector2(0, 0), new SharpDX.Vector2(patternSize, patternSize), tempBrush, 0.5f);
                    break;

                case xPFT.Charting.Base.FillPattern.Dash:
                    brt.DrawLine(new SharpDX.Vector2(0, patternSize / 4), new SharpDX.Vector2(patternSize / 4, patternSize / 4), tempBrush, 0.5f);
                    brt.DrawLine(new SharpDX.Vector2(patternSize * 3 / 4, patternSize / 4), new SharpDX.Vector2(patternSize, patternSize / 4), tempBrush, 0.5f);
                    brt.DrawLine(new SharpDX.Vector2(patternSize / 4, patternSize * 3 / 4), new SharpDX.Vector2(patternSize * 3 / 4, patternSize * 3 / 4), tempBrush, 0.5f);
                    break;

                case xPFT.Charting.Base.FillPattern.Squre:
                    brt.DrawLine(new SharpDX.Vector2(0, patternSize / 2), new SharpDX.Vector2(patternSize, patternSize / 2), tempBrush, 0.5f);
                    brt.DrawLine(new SharpDX.Vector2(patternSize / 2, 0), new SharpDX.Vector2(patternSize / 2, patternSize), tempBrush, 0.5f);
                    break;

                case xPFT.Charting.Base.FillPattern.Dot:
                    brt.FillEllipse(new SharpDX.Direct2D1.Ellipse(new SharpDX.Vector2(patternSize / 4, patternSize / 4), 1, 1), tempBrush);
                    brt.FillEllipse(new SharpDX.Direct2D1.Ellipse(new SharpDX.Vector2(patternSize / 4, patternSize * 3 / 4), 1, 1), tempBrush);
                    brt.FillEllipse(new SharpDX.Direct2D1.Ellipse(new SharpDX.Vector2(patternSize * 3 / 4, patternSize / 4), 1, 1), tempBrush);
                    brt.FillEllipse(new SharpDX.Direct2D1.Ellipse(new SharpDX.Vector2(patternSize * 3 / 4, patternSize * 3 / 4), 1, 1), tempBrush);
                    break;

                case xPFT.Charting.Base.FillPattern.Zig_Zag_Horizontal:
                    brt.DrawLine(new SharpDX.Vector2(0, patternSize / 2), new SharpDX.Vector2(patternSize / 2, 0), tempBrush, 0.5f);
                    brt.DrawLine(new SharpDX.Vector2(patternSize, patternSize / 2), new SharpDX.Vector2(patternSize / 2, 0), tempBrush, 0.5f);
                    brt.DrawLine(new SharpDX.Vector2(0, patternSize), new SharpDX.Vector2(patternSize / 2, patternSize / 2), tempBrush, 0.5f);
                    brt.DrawLine(new SharpDX.Vector2(patternSize, patternSize), new SharpDX.Vector2(patternSize / 2, patternSize / 2), tempBrush, 0.5f);
                    break;

                case xPFT.Charting.Base.FillPattern.Zig_Zag_Vertical:
                    brt.DrawLine(new SharpDX.Vector2(patternSize / 2, 0), new SharpDX.Vector2(0, patternSize / 2), tempBrush, 0.5f);
                    brt.DrawLine(new SharpDX.Vector2(patternSize / 2, patternSize), new SharpDX.Vector2(0, patternSize / 2), tempBrush, 0.5f);
                    brt.DrawLine(new SharpDX.Vector2(patternSize, 0), new SharpDX.Vector2(patternSize / 2, patternSize / 2), tempBrush, 0.5f);
                    brt.DrawLine(new SharpDX.Vector2(patternSize, patternSize), new SharpDX.Vector2(patternSize / 2, patternSize / 2), tempBrush, 0.5f);
                    break;
                }
                brt.EndDraw();
                BitmapBrushProperties bmpbp = new BitmapBrushProperties();
                bmpbp.ExtendModeX       = ExtendMode.Wrap;
                bmpbp.ExtendModeY       = ExtendMode.Wrap;
                bmpbp.InterpolationMode = BitmapInterpolationMode.Linear;
                BitmapBrush br = new BitmapBrush(brt, brt.Bitmap, bmpbp);
                tempBrush.Dispose();
                brt.Dispose();
                return(br);
            }
            else
            {
                return(null);
            }
        }