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

我使用以下代码

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

void draw() {
  background(128);
}

有任何想法吗??

谢谢大家

!!

最佳答案

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

processing - 如何使窗口小于100像素-LMLPHP

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的 Canvas (println(surface.getNative());)时,我可以将其列为processing.awt.PSurfaceAWT$SmoothCanvas,并且可以看到SmoothCanvas class with a getFrame() method看起来很有希望,但是似乎无法访问(即使它是公共(public)类的公共(public)方法)。

因此,默认情况下,此时,我要说不能将窗口的大小调整为小于Processing 3.x中的128x128。

如果必须使用Processing 3.x和较小的窗口,则可以自己调整源代码并重新编译核心库,但是稍后在具有多个Processing项目和多个版本的Processing核心库的情况下,这可能会给您带来麻烦。我不建议您正常修改核心库。

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

processing - 如何使窗口小于100像素-LMLPHP
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);
}

关于processing - 如何使窗口小于100像素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33849490/

10-12 00:12