2d绘制 c# dx_C# 从零开始写 SharpDx 应用 绘制基础图形

本文详细介绍了如何使用SharpDx在C#中从零开始创建2D界面,涵盖初始化设备资源、创建2D渲染目标及绘制基础图形如线条、矩形、椭圆和文字的方法。通过示例代码展示了DrawLine、DrawRectangle、DrawEllipse等函数的用法,强调了资源管理和性能优化的重要性。
摘要由CSDN通过智能技术生成

本文告诉大家通过 SharpDx 画出简单的 2D 界面

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

本文分为两步,第一步是初始化,第二步才是画界面

初始化

先创建 RenderForm 用来显示界面,在创建的过程需要指定宽度和高度

_renderForm = new RenderForm();

_renderForm.ClientSize = new Size(Width, Height);

private const int Width = 1280;

private const int Height = 720;

在 InitializeDeviceResources 函数里面更改一些参数,用于创建资源和初始化

var backBufferDesc =

new ModeDescription(Width, Height, new Rational(60, 1), Format.R8G8B8A8_UNorm);

var swapChainDesc = new SwapChainDescription

{

BufferCount = 1,

ModeDescription = backBufferDesc,

IsWindowed = true,

OutputHandle = _renderForm.Handle,

SampleDescription = new SampleDescription(1, 0),

SwapEffect = SwapEffect.Discard,

Usage = Usage.RenderTargetOutput

};

Device.CreateWithSwapChain(DriverType.Hardware, DeviceCreationFlags.BgraSupport, swapChainDesc,

out _d3DDevice, out _swapChain);

_d3DDeviceContext = _d3DDevice.ImmediateContext;

using (var backBuffer = _swapChain.GetBackBuffer(0))

{

_renderTargetView = new RenderTargetView(_d3DDevice, backBuffer);

_viewport = new Viewport(0, 0, Width, Height);

_d3DDeviceContext.Rasterizer.SetViewport(_viewport);

}

CreateD2DRender();

上面参数和C# 从零开始写 SharpDx 应用 初始化dx修改颜色的有一些不相同,在 SwapChainDescription 里面添加了 SwapEffect 参数

在创建交换链的时候,在 Device.CreateWithSwapChain 里面修改了 DeviceCreationFlags 参数

上面内容还是在创建 3D 内容,在 DX 里面是通过一个 3D 的平面画 2D 界面

在 CreateD2DRender 方法里面才是创建 2D 的代码

想要绘制界面需要 SharpDX.Direct2D1.RenderTarget 对象,需要先创建工厂然后通过工厂和交换链拿到平面,然后将输出定向到拿到的平面

创建工厂只需要直接创建

var d2dFactory = new SharpDX.D

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值