如何使窗口小于100像素

时间:2015-11-21 22:44:19

标签: processing

我尝试在屏幕底部制作状态栏,但窗口不能小于100像素。我正在处理Processing 3.0.1。

我使用以下代码

void setup() {
      surface.setResizable(true);
      surface.setSize(300, 20);
      surface.setLocation(displayWidth-300, displayHeight-50);
    }

void draw() {
  background(128);
}

任何想法??

提前谢谢大家

J 1

1 个答案:

答案 0 :(得分:4)

如果删除surface.setResizable(true);语句,则可以看到画布为300x20,但窗口不是:

Processing 3.0 sketch window

Processing 3.0有很多changes,包括重构窗口代码,以前依赖于Java的AWT包。

通过当前的源代码,您可以看到:

static public final int MIN_WINDOW_WIDTH = 128;
static public final int MIN_WINDOW_HEIGHT = 128;
PSurface.java line 34中定义的

并在整个PSurfaceAWT.java中使用以确保这些最小窗口尺寸。

尝试访问Surface的画布(println(surface.getNative());)我可以将其列为processing.awt.PSurfaceAWT$SmoothCanvas,我可以看到SmoothCanvas class with a getFrame() method看起来很有前景,但似乎无法访问(即使它是公共课的公共方法。)

所以默认情况下,在这个时候,我会说在处理3.x中将窗口大小调整为小于128x128是不行的。

如果处理3.x和更小的窗口是必须的,那么可以自己调整源代码并重新编译核心库,但是这可能会在以后有多个处理核心库的多个版本的处理项目时咬你。我不建议正常修改核心库。

如果您可以将Processing 2.x用于您的项目,则可以实现小于100像素的窗口大小:

PApplet resized window

import java.awt.Dimension;

int w = 300;
int h = 20;
int appBarHeight = 23;//this is on OSX, on Windows/Linux this may be different

void setup() {
  size(w, h);
  frame.setResizable(true);
}

void draw() {
  if (frame.getHeight() != h+appBarHeight){//wait for Processing to finish setting up it's window dimensions (including minimum window dimensions)
    frame.setSize(w,h+appBarHeight);//set your dimensions
  }
  background(128);
}