【问题标题】:Java "zooming" Canvas?Java“缩放”画布?
【发布时间】:2013-10-28 06:56:19
【问题描述】:

我有一个 java.awt.canvas 对象,我用 Graphics2D(我从 bufferStrategy 获得)绘制东西,我想“放大”和缩小。

因此,如果我放大(将其放大 1 倍),这样我从 (0,0) 到 (10,10) 绘制的线实际上会从 (0,0) 到 (20) ,20)

这可能吗,还是我必须自己实现?

【问题讨论】:

    标签: java zooming java-canvas


    【解决方案1】:

    看看Graphics2D:http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics2D.html

    您对图形应用适当的变换以实现许多变换、旋转、缩放(也称为缩放)和平移。最简单的缩放方法可能是

    graphics2d.scale(2.0, 2.0); // draw everything twice the original size
    

    【讨论】:

    • 看来我使用的是 Graphics 类而不是 Graphics2D。我正在使用 Canvas,如何获取 Graphics2D 对象? 编辑 我想通了!当我调用bufferStrategy.getDrawGraphics() 时,我必须进行类型转换。
    • 我注意到,当我缩放到 2 时,FPS 从 6000fps 下降到 3000fps。这正常吗? :\ 顺便说一句,这是为了游戏。
    • @PetterThowsen 根据应用于图形的转换和渲染提示,性能很可能会变化十到百倍。在某些情况下,图形实现可能能够绘制硬件加速的东西,并且缩放输出可能会干扰将其切换到软件渲染。取决于很多因素,所以很难说。不过,我不会担心速度减半。我已经编写了一个游戏原型,只使用带有图像块的基本被动渲染,它以 60fps 的速度运行(它是在 2003 年的硬件上)。
    • (没有足够的空间)当它被证明是一个问题时担心性能,而不是当你还在开发基础知识时。如果您可以坚持基本的 2d 渲染,它应该足够快,如果您需要花哨的 3d 效果,请考虑切换到基于 openGL 的渲染(有使用 openGL 进行渲染的预制 2d 游戏引擎,但我没有经验这些项目很好用)。
    猜你喜欢
    • 2011-10-10
    • 2017-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 2013-12-31
    • 2016-12-13
    • 1970-01-01
    相关资源
    最近更新 更多