Java 尝试用处理(PDE)语言调整图像大小

Java 尝试用处理(PDE)语言调整图像大小,java,processing,Java,Processing,我正沉浸在节日的气氛中,我想为圣诞节写一个小小的倒计时,但遇到了一些我无法解决的困难。我有两个PImage变量,一个是直接从硬盘上名为origbkg的图像加载的,另一个是显示为程序背景的实际图像。我这样做是为了,如果用户更改窗口的大小,图像将相应地调整大小。但是,当我将窗口设置得非常小,然后再次尝试将其最大化时,它会丢失分辨率,尽管它应该重置为从驱动器加载的原始全分辨率图像 当我试图在屏幕上显示origbkg时,由于某种原因,当我所做的只是设置bkgimg=origbkg时,它也会被修改 这是我

我正沉浸在节日的气氛中,我想为圣诞节写一个小小的倒计时,但遇到了一些我无法解决的困难。我有两个PImage变量,一个是直接从硬盘上名为origbkg的图像加载的,另一个是显示为程序背景的实际图像。我这样做是为了,如果用户更改窗口的大小,图像将相应地调整大小。但是,当我将窗口设置得非常小,然后再次尝试将其最大化时,它会丢失分辨率,尽管它应该重置为从驱动器加载的原始全分辨率图像

当我试图在屏幕上显示origbkg时,由于某种原因,当我所做的只是设置bkgimg=origbkg时,它也会被修改

这是我的密码:

//Christmas Countdown Clock
//by: Ben Templin

//============================================================




//-------------------------Variables-------------------------


boolean bkgsized;
String background;
PImage origbkg;
PImage bkgimg;
int count;
int psize;
int size;


//-------------------------Setup-------------------------


void setup()
{
  frameRate(30);
  smooth();
  size(displayWidth-250, displayHeight-250);
  frame.setResizable(true);
  background="default";
  textSize(20);
  fill(255, 0, 0);
  text("Loading Images...", width/2-100, height/2);
  origbkg=loadImage("Christmas-Tree.png");
  bkgsized=false;
  bkgimg=origbkg;
}


//-------------------------Draw-------------------------


void draw()
{
  size=width+height;
  if(psize!=size){
    bkgsized=false;
  }

  if(bkgsized==false){
    sizebkg();
  }
  psize=width+height;
}


//-------------------------Size the Background-------------------------


void sizebkg()
{
  bkgimg=origbkg;
  bkgimg.resize(width, height);
  image(bkgimg, 0, 0);
  bkgsized=true;
}
有人能告诉我为什么origbkg要换吗?提前谢谢,还有

圣诞快乐

bkgimg=origbkg;
bkgimg.resize(width, height);
变量origbkg保存对PImage对象的引用。首先,此代码将该引用复制到bkgimg中,以便bkgimg和origbkg都引用相同的PImage。然后,它调整bkgimg引用的图像的大小,该图像与origbkg引用的图像相同!要使用此技术,您必须使用某种方法克隆或复制图像,并将bkgimg设置为副本,而不是原始图像。但是,对于这个用例,实际上更有效的方法是简单地使用带有附加参数的方法来重新缩放图像以适合您的宽度和高度:

image(origbkg, 0, 0, width, height);
这样,您就不必在每次调整图像大小时创建图像的新副本


另一方面,draw方法检查窗口是否已调整大小是有缺陷的:它检查宽度+高度之和是否已更改,但此检查无法考虑窗口调整大小的可能性,即其宽度的增长距离与高度的收缩距离相同,反之亦然。要正确检查调整大小,必须同时存储pwidth变量和pheight变量并进行比较。

在我看来不像Java。你的意思是在C/C++下标记它吗?不,这是一种基于java的语言,叫做processing。你可以在这里看一下:这种语言是否支持像传统的java Graphics2D那样使用AfflineTransform绘制图像?如果是这样,那就是解决办法。我不确定,但这就是我来这里的目的另外,谢谢你花时间来研究这个问题。如果其他方法都失败了,我可以让它从驱动器重新加载,但这并不理想。谢谢你的帮助,但它仍然不起作用,这没关系,因为我不想在程序真正起作用之前再花时间在这个问题上。我可能稍后会再讨论它,但现在我可以从驱动器中重新加载它。除此之外,大多数人不会调整太多的窗口大小,我怀疑他们会在意等待2秒钟的驾驶时间。谢谢你的帮助!