在调整RCP窗口大小时,如何自动让处理中的草图调整大小?

时间:2013-06-13 07:19:13

标签: eclipse-rcp processing

我正在做一个涉及处理和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();
      }
    });

2 个答案:

答案 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);
}