代码之家  ›  专栏  ›  技术社区  ›  Tim Cooper

可扩展的视频游戏图形

  •  1
  • Tim Cooper  · 技术社区  · 14 年前

    我想制作一个相对简单的游戏,只使用图形原语(弧、线、多边形等)。

    我开始在C中绘制一个面板来完成这项工作,但现在我已经挂断了所有缩放是如何在更改分辨率时保持比例不变的。有人对如何做这种事情有什么建议和/或建议吗?

    3 回复  |  直到 14 年前
        1
  •  3
  •   Marc Bernier    14 年前

    有两种选择:

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

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

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

    而且,就像Richard说的,Winforms不适合游戏(扫雷除外!)但也许可以自学。

        2
  •  0
  •   Richard J. Ross III    14 年前

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

    如果你想要一个好的游戏平台,使用 DirectX XNA Game Studio .

        3
  •  0
  •   Reed Copsey    14 年前

    您可以使用gdi+和转换来实现这一点。有关使用矩阵进行转换的详细信息,请参见 this article on CodeProject .

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