我正在做一个涉及处理和RCP的项目。到目前为止,我做了很多工作,并且当我调整RCP窗口大小(用鼠标拖动边缘)时,我想让我的处理草图自动调整大小。
现在很多网站都说处理时不支持调整大小,有些人告诉我使用frame.setResizable(true);.这放在我的public void setup(){}
函数中时会返回错误。
我的下一个操作是向RCP窗口添加一个调整大小的侦听器,但如果我在main或createWindows函数中实现下面的代码,它只会返回错误。
有人可以帮帮我吗?
final Composite b = new Composite(shell, SWT.NONE);
b.addListener(SWT.MouseDown, new Listener() {
public void handleEvent(Event e) {
Tracker tracker = new Tracker(b.getParent(), SWT.RESIZE);
tracker.setStippled(true);
Rectangle rect = b.getBounds();
tracker.setRectangles(new Rectangle[] { rect });
if (tracker.open()) {
Rectangle after = tracker.getRectangles()[0];
b.setBounds(after);
}
tracker.dispose();
}
});
答案 0 :(得分:2)
这些网站是正确的:字面上处理不支持调整大小。它不在API中,唯一可以做到这一点的方法是通过转义到低级子系统来使用 not-Processing 代码(如果Java编译,java JFrame调整大小处理,如果JavaScript编译,canvas / page调整大小处理)。当然,这样做意味着您的代码不再是Processing,并且不能在可以运行Processing代码的环境之间移植,同时保证代码将运行(JS不知道Java是什么,并且java编译会破坏JS语法,例如)。
Processing size
函数设置了所有类型的管理变量,这些变量不能在不完全破坏所有内容的情况下第二次设置,并且没有我们可以使用的单独的resize
函数。更有趣的是,即使有,3D模式也不会让你这样做因为openGL / webGL调整大小是不可能的(所有GL缓冲区都是固定大小,调整大小需要重建宽度/高度变化的每个像素)。
所以如果你想要调整大小,可以做一些聪明的事情,在那里你可以制作一个用旧草图的状态实例化的新草图,这样你就可以在新的草图中找到一个新的草图。草图实例。
答案 1 :(得分:0)
一旦我尝试了这个,它接缝工作,虽然它有一些错误,但有点工作也看起来有点......看起来: 当然你需要制作相对于宽度/高度的可调整大小的东西......
void setup()
{
size(200, 200); // always first line
frame.setResizable(true);
background(255);
smooth();
}
void draw()
{
background(255);
ellipse(width/2, height/2, width/6, height/6);
}