如何使窗口小于100像素

Joh*_*tor 5 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);
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗??

谢谢大家

J 1

Geo*_*nza 4

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

加工3.0草图窗口

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

浏览当前的源码,可以看到:

static public final int MIN_WINDOW_WIDTH = 128;
static public final int MIN_WINDOW_HEIGHT = 128;
Run Code Online (Sandbox Code Playgroud)

在PSurface.java 第 34 行中定义并在PSurfaceAWT.java 中使用,以确保这些最小窗口尺寸。

尝试访问 Surface 的画布 ( println(surface.getNative());) 我可以将其列为,processing.awt.PSurfaceAWT$SmoothCanvas并且可以看到带有 getFrame() 方法的 SmoothCanvas 类,该方法看起来很有希望,但似乎无法访问(即使它是公共类的公共方法) )。

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

如果必须使用Processing 3.x 和更小的窗口,则可以自己调整源代码并重新编译核心库,但是当您拥有多个具有多个版本的处理核心库的处理项目时,这可能会在以后困扰您。我通常不建议修改核心库。

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

PApplet 调整窗口大小

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);
}
Run Code Online (Sandbox Code Playgroud)