use*_*460 5 java swing awt affinetransform
我不是问AffineTransform如何工作,而是问如何使用它的translate方法。
我读了很多次API,但仍然不明白它是如何工作的。
公共无效翻译(双tx,双ty)
将此转换与翻译转换连接起来。这相当于调用 concatenate(T),其中 T 是由以下矩阵表示的 AffineTransform:
Run Code Online (Sandbox Code Playgroud)[ 1 0 tx ] [ 0 1 ty ] [ 0 0 1 ]
问题:
affineTransform.translate(100, 0) 以某种方式将图像向右移动 +100 像素,向底部移动 +100 像素。为什么会这样呢?
如果我需要经常移动图像,我是否可以使用translate()来移动图像?如果没有,在框架中移动旋转图像的推荐方法是什么?
affineTransform.translate(100, 0) 以某种方式将图像向右移动 +100 像素,向底部移动 +100 像素。为什么会这样呢?
一般来说,是的,它应该将绘图偏移移动到 100x 和 0y,这意味着上下文0x0
的位置Graphics
现在将来自100x0
原始Graphics
上下文的原点。
请记住,翻译是累积的,这意味着如果您之前以Graphics
某种方式翻译了上下文,现在将添加到它(第一个翻译0x100
,第二个翻译100x0
,您现在100x100
来自原始Graphics
上下文的原点...
如果我需要经常移动图像,我是否可以使用translate()来移动图像?如果没有,在框架中移动旋转图像的推荐方法是什么?
一般来说,我用来Graphics#create
创建上下文的副本Graphics
(这会复制当前状态/属性,但仍会生成返回到Graphics
上下文的原始输出的输出),将翻译应用到副本,绘制我想要的任何内容,然后dispose
绘制复制。这使原始上下文保持不变(关于我已更改的属性)
这意味着您可以单独进行多个翻译,这不会影响以后执行的其他翻译。
另一种方法是反转翻译,但坦率地说,调用dispose
副本更简单、更容易......
归档时间: |
|
查看次数: |
3165 次 |
最近记录: |