重新调整屏幕大小不是预期的大小

时间:2015-06-24 19:50:36

标签: window processing

int displayX, displayY;
final int screenX=200, screenY=200; // display size

void setup() {
  background(255);
  displayX=displayWidth;
  displayY=displayHeight;
  size(screenX, screenY);
}

void mouseClicked() {
  if (width==screenX) {
    frame.setSize(displayX, displayY);
    setSize(displayX, displayY);
    println(width +" "+height);
  } else {
    frame.setSize(screenX, screenY);
    setSize(screenX, screenY);
    println(width +" "+height);
  }
}

void draw() {
  fill(33, 33, 33);
  rect(0, 0, screenX, screenY);
  fill(77, 77, 77);
  rect(0, 0, screenX-20, screenY-20);
}

full code
按b开始测试 - 鼠标左键单击更改

我想在启动时使用小尺寸(screenX)。 点击后,它会增长到显示尺寸。 再次点击后,它再次变小。

但改变尺寸后,尺寸不正确。 我在边境看到了。我到处都是我的星星和#34;的边界。但这只是在顶部和左侧都是正确的。

我也用直线测试了它。

处理2.2.1
Windows 7

1 个答案:

答案 0 :(得分:0)

Step one is to check out the Processing reference.

From the size() documentation:

The size() function can only be used once inside a sketch, and it cannot be used for resizing.

So, you can't use the size() function the way you're trying to use it. Instead, you can access the frame variable directly:

frame.setSize(200, 200);

You might toggle the frame's size like this:

boolean big = false;

void setup(){
  size(200, 200);
}

void mouseClicked(){
  if(big){
    frame.setSize(200, 200); //set the window size
    big = false;
  }
  else{
    frame.setSize(400, 400); //set the window size
    big = true;
  }
}

void draw(){
  background(0);
  ellipse(mouseX, mouseY, 10, 10);
}

However, if you run that program, you might notice something like this:

sketch screenshot

The window has increased size, but the actual canvas where things get drawn hasn't. So you get a gray area, and mouse events aren't detected correctly. To fix that problem, you have to set the size of the canvas as well, by calling the setSize() function:

boolean big = false;

void setup(){
  size(200, 200);
}

void mouseClicked(){
  if(big){
    frame.setSize(200, 200); //set the window size
    setSize(200, 200); //set the canvas size
    big = false;
  }
  else{
    frame.setSize(400, 400); //set the window size
    setSize(400, 400); //set the canvas size
    big = true;
  }
}

void draw(){
  background(0);
  ellipse(mouseX, mouseY, 10, 10);
}