如何设置缩放中心?

时间:2017-08-07 15:33:45

标签: java graphics 2d scale centering

我在java中使用某些图形编程。目前我可以缩放我在1D阵列中存储的图片图像。 (它逐行存储)

我的代码喜欢新职位在哪里? newpoz = (int)(x * scale) + (int)(y * scale) * width;

这给了我阵中的位置。但它按0,0缩放协调左上角的内容。如果屏幕如何将其设置为中心?所以到screen.getWidth()/ 2; screen.getHeight()/ 2。

Demonstration

有人可以帮忙吗?如果有任何问题,我会在评论中回答。

2 个答案:

答案 0 :(得分:1)

缩放某个中心(x', y') = ([x - a] * scale + a, [y - b] * scale + b)的像素坐标:

pixelArray[y * width + x]

像以前一样使用array_map()获取原始像素数据,并使用新坐标设置目标像素。

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

答案 1 :(得分:0)

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

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

同样适用于y轴。

通过一些数学运算,您可以一步完成所有这些操作。锻炼留给学生。

但如果您遇到麻烦,请发布您的尝试,然后我们就可以帮您修复代码。