2010-10-13 60 views
1

我正在寻找一个相对简单的游戏,只使用图形基元(弧,线,多边形等)。可伸缩的视频游戏图形

我开始在C#中通过绘制到Panel来做到这一点,但现在我挂断了在改变分辨率时保持比例相同的所有缩放比例。有没有人有任何建议和/或提示如何做这样的事情?

+1

我会在gamedev.stackexchange.com上询问 – Nate 2010-10-13 19:26:04

+1

对不起,我们无法将问题迁移到gamedev网站。这是一个编程问题,所以我没有看到在两个站点上都有问题,因为它们之间存在重叠。 – 2010-10-13 19:55:53

回答

3

有两种选择:

1 - 缩放一切,所以这是在屏幕/窗口的一定比例大小。例如,如果你希望你的对象是屏幕的1/4,那么它的宽度是ScreenWidth/4,高度是ScreenHeight/4。这种技术的问题在于,屏幕的高宽比可能使事物变短,变胖或变宽。通常这是通过确定一个维度,然后使用屏幕的宽高比来确定其他维度来解决的。即,宽度=高度* AspectRatio。

2 - 使所有物体具有相同的物理尺寸。例如,您可能需要一个对象完全出现1“1”。您可以使用屏幕的分辨率(每英寸点数)来相应地缩放绘图。这样做的问题在于,对于“平均”大小的屏幕来说,它可能工作得很好,但在大屏幕上图像可能太小,或者在小屏幕上太大。

大多数游戏使用技术#1(对纵横比进行补偿)。 AR并不总是一件大事,但现在宽屏显示器如此受欢迎,这几乎是必需的。另外,就像理查德说的那样,WinForms对于游戏(除了扫雷艇!)并不是很好,但是对于教你自己而言可能没问题。

+0

”AR并不总是一件大事,但现在宽屏显示器非常受欢迎,这几乎是必需的。“我不同意。对于可调整大小的窗口,您必须考虑到这一点,除非您希望您的圈子变成省略号并显示您缺乏经验。但总的来说很好。 – 2010-10-13 19:26:58

+0

文明IV在我的宽屏显示器上显示资源圈为椭圆形,他们最终解决了文明V中的问题。我一直很讨厌看到这些椭圆,我认为他们的程序员比这更聪明。 – 2010-10-13 19:33:47

+0

实际上,纵横比是非常小的解决方案 - 如果您看到圆形为椭圆形,则您需要的分辨率可能不被支持,或者您选择的任何内容都是错误的。即使如此,游戏也无法知道显示器的纵横比或像素afaik, - 支持每个分辨率都很好,并且很容易在代码中完成,但是根本没有办法做到这一点。 – jheriko 2010-10-14 19:09:28

0

不是一个真正有用的答案,但是,不要使用WinForms!

如果您想要一个好的游戏平台,请使用DirectXXNA Game Studio

+0

该死的没有什么帮助。 WinForms适用于简单的小游戏,听起来这就是这里的目标。使用DirectX意味着必须学习表面,像素格式和一百万个其他管道细节,才能在屏幕上绘制一个点。然后,是否存在不涉及3D图形调用的线条或弧线绘制功能?并且是否存在,*这是如何解决实际问题的?* – cHao 2010-10-13 19:15:42

+0

您实际使用过DirectX吗?该API是可怕的...我不会推荐给初学者。 – jheriko 2010-10-14 19:12:09

+0

不,我没有使用过DX,但是我使用XNA a.lot,它很容易理解,尽管你需要制作自己的绘制图元的方法。“ – 2010-10-14 23:21:01

0

您可以使用GDI +进行此操作并进行转换。有关使用Matrix进行转换的详细信息,请参阅this article on CodeProject

这就是说,使用WPF的绘图选项更简单得多。除了作为保留模式模型,在做简单图形时更简单(即:移动对象而不是不断重绘),它还有其他一些好处。主要好处是WPF中的所有内容都是使用浮点值完成的,并且完全可扩展,无需额外的实际工作。有关详细信息,请参阅Shapes and Basic Drawing with WPF,其中包括形状的绘制和变形。