0

很抱歉问,但我就是不明白发生了什么。

我是 DirectX/SlimDX 的新手。我目前正在尝试创建一个控件来显示 3D 点。我编写了最简单的代码,主要是使用第 3 个 SlimDX 教程。我在表单上放置了一个大小为 200x200 的控件,并尝试在其上绘制点:

    for (float i = -0.5f; i <= 0.5f; i += 0.001f)
         cloud.Add(new Vertex(i, 0.001f, 0));

这是一条 y 坐标接近 0 且 x 坐标从 -0.5 到 0.5 的线。

现在,据我了解,如果我将矩形标记为视口,则矩形的原点位于中心。现在,我的控件是 200x200,所以在创建视口时,我提供了一个 (0,0,200,200) 的视口矩形。因此,我的这条线应显示在沿 y 轴的矩形的中心。但我得到的是:

http://www.4shared.com/photo/xGlGwTWK/Untitled.html

我的线在控件的最底部。x坐标似乎很好,但为什么我的线在底部应该在中心?

游戏中根本没有世界、视图、投影矩阵!但线仍然在错误的位置。谁能解释我发生了什么事?

我在这里上传了我的项目的剥离版本,只有 3 个短文件,可能是最简单的绘图:http ://www.4shared.com/zip/uPKVbQKV/ScanForSO.html

谢谢你们。

4

1 回答 1

0

我似乎找到了答案。这是因为控件是从 Panel 派生的,而 Panel 的原始大小(我猜是从 Panel 构造函数中设置的)是 200x100。但是,当我创建视口时,我将其设置为 200x200。因此,origo 位于对照的底部中心。然后控件的大小调整为 200x200,设备/视口以某种方式自动跟随。

于 2013-01-16T10:24:29.540 回答