【发布时间】:2014-05-06 12:58:33
【问题描述】:
今天我遇到了 SWT 转换代码的一些奇怪行为。问题是,当我尝试使用 Transform.rotate(45f) 将坐标系旋转 45 度,然后绘制矩形的 outline 时,它绘制的矩形移动了。
考虑以下绘制旋转矩形的代码:
...
m_canvas.addPaintListener(new PaintListener()
{
@Override
public void paintControl(PaintEvent a_e)
{
GC gc = a_e.gc;
Transform t = new Transform(gc.getDevice());
t.rotate(m_angle);
gc.setTransform(t);
gc.setForeground(fgcolor);
gc.setBackground(bgcolor);
gc.drawRectangle(rect);
}
});
...
此外,我们还有两个按钮,用于将角度增加和减少 1 度。现在使用该按钮将矩形从 0 度旋转到 90 度,看看 45 度左右会发生什么。
请注意,如果我尝试使用GC.fillRectangle(),则填充的矩形会旋转并正确绘制。 GC.drawRectangle() 方法的问题。
这就是它的样子:
类的完整代码可用here
带有 Eclipse 项目源的可运行 JAR(适用于 win32)将按要求发布,因为我没有足够的声誉。
是我做错了什么还是有解决此问题的方法?
【问题讨论】:
-
这真的很好奇。可能值得将其发布为错误here。
标签: java eclipse graphics rotation swt