我正在用java进行一些图形编程。目前,我可以缩放存储在 1D 数组中的图片图像。(它逐行存储(
我的代码像新职位在哪里?newpoz = (int)(x * scale) + (int)(y * scale) * width;
这给了我在数组中的位置。但它按 0,0 坐标缩放左上角的内容。如果屏幕显示,如何将其设置为中心?所以到屏幕.getWidth((/2;screen.getHeight((/2.
示范
有人可以帮忙吗?如果有任何问题,我会在评论中回答。
要缩放围绕某些中心(a, b)
的像素坐标:
(x', y') = ([x - a] * scale + a, [y - b] * scale + b)
像以前一样使用pixelArray[y * width + x]
获取原始像素数据,并使用新坐标类似地设置目标像素。
编辑:您可能还想查看双线性插值,因为如果直接使用当前的原始方法,可能会在最终图像中给出锯齿状边缘。
如果先将图像的中心转换为 (0,0(,然后缩放图像,然后向后平移图像,则将有效地缩放图像所需的居中。
- x1 = x - screen_width/2
- x2 = x1 * 比例
- x3 = x2 + screen_width/2
y 轴同上。
通过一些数学,您可以一步完成所有操作。 运动留给学生。
但是,如果您遇到麻烦,请发布您的尝试,然后我们可以帮助您修复代码。