|
Non volevo allargare troppo il post precedente.
Escludendo la procedura per caricare l'immagine da disco,che mi funziona,inserisco le due funzioni e i cicli che sto provando a fare e non funzionano.Ci deve essere un casino enorme con le variabili e le coordinate.
Impostato cosė,mi colora solo la parte a sinistra del mouse ma il colore non č fisso.Lampeggia durante lo spostamento.A destra non colora nulla.
Come vedete,ho disattivato dei comandi.Se li attivo,non funziona nulla nemmeno a sinistra.
Codice :
PImage img,img1;
void setup()
{
surface.setResizable(true);
img= getImage();
surface.setSize(img.width, img.height);
image(img,0,0);
}
void draw()
{
if (key=='m')
{
noStroke();
image(img,0,0);
}
else if (key=='g')
{
img1=creaimmagine(img);
noStroke();
image(img1,0,0);
}
}
PImage creaimmagine(PImage img1)
{
int x0;int y0;int x1;int y1;int n_x=img.width;int n_y=img.height;
color c,csx,cdx;
c=img1.get(mouseX-5,mouseY);
for(x0=0;x0<=mouseX-5;x0=x0+1)
{
for(y0=0;y0<=mouseX-5+n_y-1;y0=y0+1)
{
//for(x1=mouseX-4;x1>n_x-mouseX-5;x1=x1+1)
//{
//for(y1=0;y1>=mouseX-4+n_y-1;y1=y1+1)
//{
c=img1.get(mouseX-5,mouseY);
csx=calcolapixelsx(c);
//cdx=calcolapixeldx(c);
img1.set(x0,y0,csx);
//img1.set(x1,y1,cdx);
//}
//}
}
}
return img1;
}
color calcolapixelsx(color csx)
{
float r,g,b;
r=red(csx);
g=green(csx);
b=blue(csx);
if(((r*1.5)+10.0)>255.0)
{
r=255.0;
}
else
{
r=(r*1.5)+10.0;
}
if(((g*1.3)+20.0)>255.0)
{
g=255.0;
}
else
{
g=(g*1.3)+20.0;
}
if((b+50.0)>255.0)
{
b=255.0;
}
else
{
b=b+50.0;
}
csx=color(r,g,b);
return csx;
}
color calcolapixeldx(color cdx)
{
float r,g,b;
float d;
d=sqrt(((mouseX-mouseX-5)*(mouseX-mouseX-5))+((mouseY-mouseY)*(mouseY-mouseY)));
r=red(cdx);
g=green(cdx);
b=blue(cdx);
if((r-d)>255.0)
{
r=255.0;
}
else
{
r=r-d;
}
if((g-d)>255.0)
{
g=255.0;
}
else
{
g=g-d;
}
if((b-d)>255.0)
{
b=255.0;
}
else
{
b=b-d;
}
cdx=color(r,g,b);
return cdx;
}
|