Class 释放鼠标后,填充的直肠消失

Class 释放鼠标后,填充的直肠消失,class,for-loop,image-processing,arraylist,processing,Class,For Loop,Image Processing,Arraylist,Processing,我是新来的。我想写一个程序,在其中我选择一个图像区域(例如Photoshop中的“rect selection”),该区域有一个红色笔划,并且稍微不透明,一旦选择该区域,矩形将填充同一区域像素的平均颜色,红色笔划将关闭。这样做的目的是能够在同一张图像上重复此操作数次。当我释放鼠标时,填充被擦除,因为背景(buff)在void draw()中。我想保存用新颜色填充的矩形。我想我需要使用数组、类,但我不明白它们是如何工作的。如果有人能帮助我,那将是一个很大的帮助。多谢各位 PImage buff1;

我是新来的。我想写一个程序,在其中我选择一个图像区域(例如Photoshop中的“rect selection”),该区域有一个红色笔划,并且稍微不透明,一旦选择该区域,矩形将填充同一区域像素的平均颜色,红色笔划将关闭。这样做的目的是能够在同一张图像上重复此操作数次。当我释放鼠标时,填充被擦除,因为
背景(buff)
void draw()中。我想保存用新颜色填充的矩形。我想我需要使用数组、类,但我不明白它们是如何工作的。如果有人能帮助我,那将是一个很大的帮助。多谢各位

PImage buff1;
int-x1,y1,x2,y2,h1,h2;
无效设置()
{
规模(1000721);
buff1=loadImage(“buff1.jpg2”);
背景(1);
}
颜色提取ColorFromImage(最终PImage buff1){
buff1.loadPixels();
颜色r=1,g=1,b=1;
用于(最终颜色c:buff1.像素){
r+=c>>020&255;
g+=c>>010&255;
b+=c&255;
}
r/=buff1.pixels.length;
g/=buff1.pixels.length;
b/=buff1.pixels.length;
返回颜色(r、g、b);
}
作废提款()
{
背景(1);
矩形模式(拐角);
冲程(255,0,0);
冲程重量(2);
冲程联接(圆形);
rect(x1,y1,x2,y2,2);
填充(255,0,0,50);
仰泳();
光标(箭头);
}
void mousePressed()
{
x1=鼠标;
y1=老鼠;
}
void mouseDragged()
{
x2=鼠标;
y2=老鼠;
}
void mouseereleased()
{
int H1=绝对值(1+x2-x1);
int H2=abs(1+y2-y1);

对于(int i=0;i一旦加载了图像的像素数据,就可以通过访问和更改加载的像素。
使用其p
ixels[]数组中的数据更新图像:

void mouseereleased()
{
int x_1=min(x1,x2);
int y_1=最小值(y1,y2);
int x_2=最大值(x1,x2);
int y_2=最大值(y1,y2);
PImage newImg=buff1.get(x_1,y_1,x_2-x1+1,y_2-y1+1);
color new\u color=extractColorFromImage(newImg);
buff1.loadPixels();

对于(int i=x_1;i一旦图像的像素数据已由加载,则加载的像素可由访问和更改。
使用其p
ixels[]数组中的数据更新图像:

void mouseereleased()
{
int x_1=min(x1,x2);
int y_1=最小值(y1,y2);
int x_2=最大值(x1,x2);
int y_2=最大值(y1,y2);
PImage newImg=buff1.get(x_1,y_1,x_2-x1+1,y_2-y1+1);
color new\u color=extractColorFromImage(newImg);
buff1.loadPixels();

对于(int i=x_1;我非常感谢,但是现在我在哪里可以调整这个新颜色的不透明度。我不知道在这个代码中在哪里添加alpha通道。@Antang可以使用第四个参数
color(r,g,b,128)
。但是请注意,颜色可以通过混合。例如
color orig_color=buff1.pixels[j*buff1.width+i];
buff1.pixels[j*buff1.width+i]=lerpColor(原色,新色,0.5);
。我已经在答案中添加了这个选项,现在非常感谢,但是现在我在哪里可以调整这个新颜色的不透明度。我不知道在这个代码中在哪里添加alpha通道。@Antang可以使用第四个参数
颜色(r,g,b,128)
。但是请注意,颜色可以通过以下方式混合:例如,
color orig_color=buff1.pixels[j*buff1.width+i];
buff1.pixels[j*buff1.width+i]=lerpColor(orig_color,new_color,0.5);
。我现在已经在答案中添加了这个选项