C# 可缩放视频游戏图形

C# 可缩放视频游戏图形,c#,drawing,C#,Drawing,我正在寻找一个相对简单的游戏,只使用图形原语(弧、线、多边形等) 我开始在C#中通过绘制面板来实现这一点,但现在我对如何在更改分辨率时保持比例不变的所有缩放操作感到困惑。有人对如何做这样的事情有什么建议和/或提示吗?这不是一个真正有用的答案,但是,不要使用WinForms 如果您想要一个好的游戏平台,请使用或。有两种选择: 1-缩放所有内容,使其按屏幕/窗口的特定百分比调整大小。例如,如果希望对象是屏幕的1/4,则其宽度为ScreenWidth/4,高度为ScreenHeight/4。这种技术的

我正在寻找一个相对简单的游戏,只使用图形原语(弧、线、多边形等)


我开始在C#中通过绘制面板来实现这一点,但现在我对如何在更改分辨率时保持比例不变的所有缩放操作感到困惑。有人对如何做这样的事情有什么建议和/或提示吗?

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

如果您想要一个好的游戏平台,请使用或。

有两种选择:

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

2-使所有事物都具有相同的物理维度。例如,您可能希望对象精确显示为1“乘1”。可以使用屏幕的分辨率(每英寸点数)相应地缩放图形。问题在于,虽然它可能适用于“一般”大小的屏幕,但在大屏幕上图像可能太小,或者在小屏幕上图像可能太大


大多数游戏使用技巧#1(对纵横比进行补偿)。AR并不总是一个大问题,但现在随着宽屏显示器的流行,它几乎是必需的


此外,正如Richard所说,WinForms对于游戏来说并不太好(扫雷舰除外!),但也许可以自学。

您可以使用GDI+和转换来实现这一点。有关使用矩阵进行变换的详细信息,请参见


也就是说,使用WPF的绘图选项要简单得多。除了作为一个保留模式模型(在进行简单图形时更简单)(即:移动对象而不是不断重画)之外,它还有一些其他好处。主要的好处是WPF中的所有内容都是使用浮点值完成的,并且是完全可伸缩的,不需要额外的实际工作。有关这方面的详细信息,请参见,其中包括图形的绘制和变换。

没错,这并没有真正的帮助。WinForms适用于简单的小游戏,听起来这就是我们的目标。使用DirectX意味着只需在屏幕上画一个点,就必须了解曲面、像素格式和其他无数管道细节。然后,是否有一个不涉及3D图形调用的直线或圆弧绘图功能?不管有没有,这是如何解决实际问题的?您是否实际使用过DirectX???API太可怕了。。。我不推荐初学者使用它。不,我没有太多使用dx,但我使用了很多XNA,而且它很容易理解,尽管你需要自己制作绘制原语的方法……我会在gamedev.stackexchange.com上询问。对不起,我们没有能力将问题迁移到gamedev网站。这是一个编程问题,所以我不认为在两个网站上问这个问题有什么错,因为它们之间有重叠。“AR并不总是一个大问题,但现在宽屏显示器如此流行,几乎是必需的。”我不同意。对于可调整大小的窗口,你必须始终考虑到这一点,除非你希望你的圆圈变成椭圆,并显示出你缺乏经验。但总的来说,回答很好。文明IV在我的宽屏显示器上以椭圆形显示资源圈,他们最终解决了文明V中的问题。我一直不喜欢看到这些椭圆形,我认为他们的程序员比这更聪明。实际上,纵横比很难解决-如果你将圆形视为椭圆形,可能是你需要的解决方案没有得到支持,或者你选择的任何方案都是错误的。即使如此,游戏也无法知道显示器的纵横比或像素afaik,-支持每种分辨率在代码中都很好,很容易做到,但根本不支持就容易多了,AR校正对于那些关心质量的人来说总是一件大事——如果你真的关心质量的话,这就是你一直在做的事情。。。做这件事当然不是什么新鲜事,只是新的一点,你不能不做它就逃脱。我应该说‘不同的长宽比’。即使几乎所有的监视器都是4:3,AR缩放也是必要的。只是你可以硬编码4:3,不用担心。