【问题标题】:How can I set the center of scaling?如何设置缩放中心?
【发布时间】:2018-01-14 23:36:38
【问题描述】:

我正在使用 java 进行一些图形编程。目前,我可以缩放存储在一维数组中的图片图像。 (它逐行存储)

我的代码比如新位置在哪里? newpoz = (int)(x * scale) + (int)(y * scale) * width;

这给了我在数组中的位置。但它按左上角的 0,0 坐标缩放。如果是屏幕,如何将其设置为中心?所以到screen.getWidth()/2;screen.getHeight()/2。

Demonstration

有人可以帮忙吗?有什么问题我会在cmets中回答。

【问题讨论】:

    标签: java graphics 2d scale centering


    【解决方案1】:

    围绕某个中心缩放像素坐标(a, b)

    (x', y') = ([x - a] * scale + a, [y - b] * scale + b)

    像以前一样使用pixelArray[y * width + x]获取原始像素数据,并使用新坐标类似地设置目标像素。

    编辑:您可能还想查看双线性插值,因为如果直接使用当前的原始方法,最终图像可能会出现锯齿状边缘。

    【讨论】:

      【解决方案2】:

      如果您首先将图像的中心转换为 (0,0),然后缩放图像,然后将图像转换回来,您将有效地以所需的居中缩放图像。

      • x1 = x - screen_width/2
      • x2 = x1 * 比例
      • x3 = x2 + screen_width/2

      y 轴同上。

      只需一点数学知识,您就可以一步完成这一切。练习留给学生。

      但是,如果您遇到问题,请发布您的尝试,然后我们可以帮助您修复代码。

      【讨论】:

        猜你喜欢
        • 2020-04-07
        • 2012-08-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-10
        • 1970-01-01
        • 1970-01-01
        • 2017-02-18
        相关资源
        最近更新 更多