C# 从零开始OA信用盘平台修复写 SharpDx 应用 控制台创建 Sharpdx 窗口

首先创建OA信用盘平台修复,需要请搜索【大神源码论坛】dsluntan.com 客服企娥3393756370 V信17061863513,一个控制台程序,选择 dotnet framework 为 4.5 这样就可以保证下面安装的库可以使用

下载
最好是使用 VisualStudio 2017项目格式,这样就可以直接复制下面代码放在自己的项目文件,就可以快速使用 Nuget 安装而不是需要等待 VisualStudio 的安装
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net45</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="SharpDX" Version="4.1.0" />
<PackageReference Include="SharpDX.D3DCompiler" Version="4.1.0" />
<PackageReference Include="SharpDX.Desktop" Version="3.1.1" />
<PackageReference Include="SharpDX.Direct2D1" Version="4.1.0" />
<PackageReference Include="SharpDX.Direct3D11" Version="4.1.0" />
<PackageReference Include="SharpDX.DXGI" Version="4.1.0" />
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
</Project>
1234567891011121314151617
如果使用的不是 VisualStudio 2017 的就通过 Nuget 安装下面几个库

SharpDX
SharpDX.D3DCompiler
SharpDX.Desktop
SharpDX.Direct2D1
SharpDX.Direct3D11
SharpDX.DXGI

创建窗口
首先创建一个简单的类,这个类主要使用 RenderForm 来创建窗口
class KikuSimairme
{
private RenderForm _renderForm;

    private const int Width = 1280;
    private const int Height = 720;

}

123456789
这个类的主要就是 RenderForm ,在使用的时候需要引用
using SharpDX.Windows;

12
现在还没有创建好窗口,需要在构造函数使用这个代码
public KikuSimairme()
{
_renderForm = new RenderForm();
_renderForm.ClientSize = new Size(Width, Height);
}
12345
如果是在 WPF 创建一个窗口,除了创建还需要显示,下面来告诉大家如何显示窗口
在KikuSimairme添加两个方法
public void Run()
{
RenderLoop.Run(_renderForm, RenderCallback);
}

    private void RenderCallback()
    {

    }

123456789
这样就可以在调用 Run 显示窗口,因为创建窗口需要开启循环,使用 RenderLoop.Run 就可以
在不使用这个窗口时需要记得去掉
class KikuSimairme : IDisposable
{
// 其他代码
public void Dispose()
{
_renderForm?.Dispose();
}
}
12345678
在 Main 函数创建类,然后显示窗口
static void Main(string[] args)
{
using (var temp = new KikuSimairme())
{
temp.Run();
}
}
1234567
现在按下运行就可以看到显示了一个窗口
虽然里面还没什么东西,但是已经可以显示窗口,在窗口里面也就可以进行画东西。以前很少在一个控制台创建窗口,现在使用 sharpDx 可以很简单在控制台创建窗口
这是KikuSimairme类的全部代码
class KikuSimairme : IDisposable
{
/// <inheritdoc />
public KikuSimairme()
{
_renderForm = new RenderForm();
_renderForm.ClientSize = new Size(Width, Height);
}

    private const int Width = 1280;

    private const int Height = 720;

    public void Run()
    {
        RenderLoop.Run(_renderForm, RenderCallback);
    }

    private RenderForm _renderForm;

    private void RenderCallback()
    {
    }

    /// <inheritdoc />
    public void Dispose()
    {
        _renderForm?.Dispose();
    }
}

猜你喜欢

转载自blog.51cto.com/14014115/2298711