可伸缩视频游戏图形

时间:2010-10-13 19:01:36

标签: c# drawing

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

我开始在C#中通过绘制到Panel来完成此操作,但是现在我已经挂断了所有缩放的工作方式,以便在更改分辨率时保持比例相同。有没有人对如何做这样的事情有任何建议和/或提示?

3 个答案:

答案 0 :(得分:3)

有两种选择:

1 - 缩放所有内容,使其按屏幕/窗口的某个百分比调整大小。例如,如果您希望对象是屏幕的1/4,那么它的宽度是ScreenWidth / 4,高度是ScreenHeight / 4。这种技术的问题在于屏幕的纵横比可能会使事物变短,变胖或变粗。通常,这可以通过确定一个维度然后使用屏幕的纵横比来确定另一个维度来解决。即,宽度=高度* AspectRatio。

2 - 让所有东西都具有相同的物理尺寸。例如,您可能希望对象正好以1“乘1”的形式出现。您可以使用屏幕的分辨率(每英寸点数)来相应地缩放图形。这个问题是虽然它可能适用于“普通”尺寸的屏幕,但在大屏幕上图像可能太小或在小屏幕上图像太大。

大多数游戏使用技术#1(对宽高比进行补偿)。 AR并不总是一件大事,但现在宽屏显示器如此受欢迎,几乎是必需的。

另外,就像理查德所说的那样,WinForms并不适合游戏(扫雷除外!),但可能不适合自学。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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