Java SWT复合变换
我既找不到解决方案,也找不到是否有可能在SWT中轻松转换合成 我正在尝试使用CTRL+SCROLL在合成图上实现放大/缩小。到目前为止,我发现在合成中添加了一个PaintListener,如下所示:Java SWT复合变换,java,swt,composite,Java,Swt,Composite,我既找不到解决方案,也找不到是否有可能在SWT中轻松转换合成 我正在尝试使用CTRL+SCROLL在合成图上实现放大/缩小。到目前为止,我发现在合成中添加了一个PaintListener,如下所示: this.viewingFrame = new Shell(new Display()); this.viewingFrame.setLayout(new GridLayout(2, false)); GridDataFactory.fillDefaults().grab(t
this.viewingFrame = new Shell(new Display());
this.viewingFrame.setLayout(new GridLayout(2, false));
GridDataFactory.fillDefaults().grab(true, true).applyTo(viewingFrame);
c1 = new Composite(viewingFrame, SWT.NONE);
GridLayoutFactory.swtDefaults().applyTo(c1);
GridDataFactory.swtDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(c1);
c1.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent e) {
Transform trans = new Transform(e.display);
e.gc.setAdvanced(true); // After this line a call to e.gc.getAdvance() returns true
trans.scale(1.5f, 1.5f);
e.gc.setTransform(trans);
trans.dispose();
}
});
// Of course there is more code. I have a KTable displaying a 2D map. I also tried adding the PaintListener to the shell, the composite c1 and the KTable. Same result.
然而,这不起作用。在调试时,我可以看到调用了侦听器,但没有明显的效果
我是SWT新手,但我学得快,所以我愿意考虑复杂的解决方案。
简短的答案是:SWT中的比例控制不支持(直接)。
转换
仅适用于在为其创建转换的GC上执行的绘图操作。它不会影响组合中包含的控件
要模拟一定程度的缩放,可以更改内容应缩放的容器的字体大小(即Shell
或Composite
),然后重新布局。除非显式设置字体,否则包含的控件将继承字体大小。在后一种情况下,您还必须更改这些字体的大小
如果希望Shell
随内容增长/收缩,则必须pack()
。否则,您可能需要在包含所有实际内容的Shell中放置一个ScrolledComposite
顺便说一句,如果你真的想画一些东西,请使用
Canvas
小部件而不是Composite
。谢谢你的解释和建议。这并不是我想要的,但我想我可以让它满足我的需要。