Voglio dipingere la grafica su una tela in modo tale che i colori siano additivi. Per esempio, io voglio produrre questo:
Come dipingere con alfa?
Ma invece, ottengo questo:
Si noti che il mezzo bianco, sfondo metà nero è intenzionale, solo per vedere come alfa interagisce sia con sfondi. Sarò felice di avere questo lavoro con entrambi i precedenti. Ecco il mio codice:
public class VennColorsActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
class VennView extends View {
public VennView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int alpha = 60, val = 255;
int ar = Color.argb(alpha, val, 0, 0);
int ag = Color.argb(alpha, 0, val, 0);
int ab = Color.argb(alpha, 0, 0, val);
float w = canvas.getWidth();
float h = canvas.getHeight();
float cx = w/2f;
float cy = h/2;
float r = w/5;
float tx = (float) (r * Math.cos(30 * Math.PI/180));
float ty = (float) (r * Math.sin(30 * Math.PI/180));
float expand = 1.5f;
Paint paint = new Paint();
paint.setColor(Color.WHITE);
canvas.drawRect(new Rect(0, 0, (int) w, (int) (h/2)), paint);
PorterDuff.Mode mode = android.graphics.PorterDuff.Mode.ADD;
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColorFilter(new PorterDuffColorFilter(ar, mode));
paint.setColor(ar);
canvas.drawCircle(cx, cy - r, expand * r, paint);
paint.setColorFilter(new PorterDuffColorFilter(ag, mode));
paint.setColor(ag);
canvas.drawCircle(cx - tx, cy + ty, expand * r, paint);
paint.setColorFilter(new PorterDuffColorFilter(ab, mode));
paint.setColor(ab);
canvas.drawCircle(cx + tx, cy + ty, expand * r, paint);
}
}
this.setContentView(new VennView(this));
}
}
Qualcuno può aiutarmi a capire come dipingere con colori additivi nella grafica Android?
Grazie mille, Pavel; e anche così veloce! –
BTW, sapresti di un'alternativa a PorterDuff.Mode.ADD compatibile con SDK versione 8? La documentazione dice che ADD è stato aggiunto nella versione 8 ma si trova. È stato davvero introdotto nella versione 11 e si blocca su alcuni dispositivi meno recenti che non avrebbero dovuto essere autorizzati a installare il mio widget. –
Questo è fantastico!Puoi applicare questa tecnica alle bitmap che si sovrappongono? –