如何使用RenderTarget全屏显示文本?

时间:2017-10-06 10:09:07

标签: c# directx-11 sharpdx

这是我的第一个应用程序,所以我很抱歉有点混乱的描述。

我想在全屏显示“你好世界” - 我下载了SharpDX样本,那里有“hello world”样本。我将渲染表单的创建更改为:

_form = new RenderForm("hello world")
{
  WindowState = FormWindowState.Maximized,
  IsFullscreen = true,
  FormBorderStyle = FormBorderStyle.None
};

然后使用_form.Width / _form.Height作为尺寸值,用于在绘制文字时设置WindowRenderTarget的属性和矩形大小。

工作正常,尺寸正确,文字不模糊(意味着它没有拉伸,这会影响使用不同的尺码)。

这种方法使用WindowRenderTarget,我注意到在SharpDX示例中还有使用Direct2D1DemoApp的类(RenderTarget),所以我切换“hello world”来使用它。

我做了相同的更改,并将SwapChainDescription.IsWindowed设置为false。但是这次它不能正常工作 - 我得到了全屏但是看起来我看起来有一些虚拟工作空间〜比显示器分辨率大4倍,显示器正在偷看它的左上角工作区。我只能看到文本的一部分,而且它已被拉伸。

所以有一个地方缩放开启,或者有一些不同于我设置的尺寸。但我没有看到任何有这种偏差的地方。

所以我的问题是 - 使用RenderTarget时需要什么才能全屏? SharpDX的原始代码:

1 个答案:

答案 0 :(得分:0)

区别的单行,因为交换链是在表单之后创建的,并且我在此时依赖于表单,首先需要显示表单。所以加上这个:

_form = new RenderForm("hello world")
{
  WindowState = FormWindowState.Maximized,
  IsFullscreen = true,
  FormBorderStyle = FormBorderStyle.None
};

_form.Show(); // new !

我终于得到了预期的效果。