C# 从零开始写 SharpDx 应用 笔刷

本文详细介绍了如何在SharpDx中使用笔刷进行绘图,包括纯色笔刷、渐变笔刷(线性和圆形)以及图片笔刷的创建和应用。教程基于C#,讲解了相关初始化、颜色转换、资源管理和笔刷的使用方法,旨在帮助读者掌握SharpDx的绘图技巧。
摘要由CSDN通过智能技术生成

本文告诉大家如何在 SharpDx 里面使用笔刷,包括纯色笔刷、渐变笔刷和图片笔刷

本文属于 SharpDx 系列 博客,建议从头开始读

初始化

本文将会在 C# 从零开始写 SharpDx 应用 初始化dx修改颜色的代码基础进行修改

用到的初始化代码也不多,请看下面代码,这些代码都可以在上一篇博客找到

        private void InitializeDeviceResources()
        {
   
            var backBufferDesc =
                new ModeDescription(Width, Height, new Rational(60, 1), Format.R8G8B8A8_UNorm);
            var swapChainDesc = new SwapChainDescription
            {
   
                ModeDescription = backBufferDesc,
                SampleDescription = new SampleDescription(1, 0),
                SwapEffect = SwapEffect.Discard,
                Usage = Usage.RenderTargetOutput,
                BufferCount = 1,
                OutputHandle = _renderForm.Handle,
                IsWindowed = true
            };

            Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, swapChainDesc,
                out _d3DDevice, out _swapChain);

            _d3DDeviceContext = _d3DDevice.ImmediateContext;

            using (var backBuffer = _swapChain.GetBackBuffer<Texture2D>(0))
            {
   
                _renderTargetView = new RenderTargetView(_d3DDevice, backBuffer);

                _viewport = new Viewport(0, 0, Width, Height);
                _d3DDeviceContext.Rasterizer.SetViewport(_viewport);
            }

            CreateD2DRender();
        }

在 CreateD2DRender 方法里面创建 D2D 的资源,本文这里直接写上代码,如果想要了解代码含义请看 C# 从零开始写 SharpDx 应用 绘制基础图形

        private void CreateD2DRender()
        {
   
            var d2dFactory = new SharpDX.Direct2D1.Factory();
            Texture2D backBuffer = D3D11.Resource.FromSwapChain<Texture2D>(_swapChain, 0);
            Surface surface = backBuffer.QueryInterface<Surface>();
            var d2dRenderTarget = new RenderTarget(d2dFactory, surface,
                new RenderTargetProperties(new PixelFormat(Format.Unknown, AlphaMode.Premultiplied)));

            var defaultDevice = _d3DDevice.QueryInterface<SharpDX.Direct3D11.Device1>();
            var dxgiDevice2 = defaultDevice.QueryInterface<SharpDX.DXGI.Device2>();
            var d2dDevice = new SharpDX.Direct2D1.Device(dxgiDevice2);

            _d2dFactory = d2dFactory;
            _d2dRenderTarget = d2dRenderTarget;
            _d2dContext = new DeviceContext(surface);
            _d2dDevice = d2dDevice;
        }

        private Factory _d2dFactory;
        private RenderTarget _d2dRenderTarget;
        private
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值