Originariamente inviata da
LeleFT
Se vuoi che qualcuno ti possa aiutare a capire dove sta il problema, dovresti postare un po' di codice... almeno la parte di codice che non ti funziona.
Senza vedere nulla, nessuno potrà mai sapere cosa stai sbagliando...
Ciao.
ok,non volevo allargare troppo il post.
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;
}