我正在尝试按照光标移动图像,平滑地移动它所在的位置并转向面对它。
当我靠近原点时,它完美无缺:图像将完全翻转而没有问题,但是从窗口的原点越远,图像越少。当我在屏幕的另一侧时,不是翻过来而是旋转5°-15°而不是。
如果有人能指出问题是什么,我会很高兴=)
这是我目前的图片代码:
<div ui-tree="treeOptions" callbacks="treeOptions">
<ol ui-tree-nodes="" data-nodrop-enabled="true" ng-model="rootNodeLst" callbacks="treeOptions" id="tree-root">
<li ng-repeat="node ui-tree-desIndex="node.sortIndex" in rootNodeLst" callbacks="treeOptions" ui-tree-node ng-include="'nodes_renderer.html'"></li>
</ol>
</div>
这是处理旋转的代码,加上它的移动:
lblRover = new JLabel(sees) { // sees is an ImageIcon
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
AffineTransform aT = g2.getTransform();
Shape oldshape = g2.getClip();
double x = getWidth()/2.0;
double y = getHeight()/2.0;
aT.rotate(Math.toRadians(degrees), x, y);
g2.setTransform(aT);
g2.setClip(oldshape);
super.paintComponent(g);
}
};
lblRover.setSize(179, 180);
lblRover.setLocation(500, 300);
JFrame.getFrames()[0].add(lblRover);
答案 0 :(得分:0)
好吧,经过多次尝试,我把它缩小了。
现在,旋转代码在重绘之前放在最后,它看起来像这样:
sas=this.getAngle((float)diffy,(float)diffx);
NewJFrame.degrees=sas;
我还创建了这个使用两个浮点而不是两个点的新方法:
public float getAngle(Float x, Float y) {
float angle = (float) Math.toDegrees(Math.atan2(x, y));
//System.out.println(angle);
return angle;
我不知道为什么它现在有效,但它之前没有,因为程序基本相同......但是嘿它有效! = d