Ho una SweepGradient definito comeAndroid SweepGradient
circle_paint.setShader(new SweepGradient(getWidth()/2, getHeight()/2, new int[] { circle_start_color, circle_end_color}, new float[] { 0f, 1f}))
applicata ad un arco definito come
canvas.drawArc(circle_bounds, circle_start_perc*360f, circle_end_perc*360f, true, circle_paint);
Questo workes bene, ma devo l'arco per iniziare a disegnare dalla parte superiore dello schermo, cioè
canvas.drawArc(circle_bounds, ((circle_start_perc*360f)-90f)%360, circle_end_perc*360f, true, circle_paint);
il problema è che lo SweepGradient sembra iniziare ancora a 0 gradi, e ho bisogno iniziare alle 270 gradi (simile alla traduzione fatta sul disegno dell'arco). In altre parole, se ho una sfumatura dal bianco al blu, ho bisogno che la parte superiore dell'arco sia dipinta di bianco e l'ultima parte dell'arco sia dipinta di blu. Come posso fare questo?
Grazie. Ho appena ruotato la tela prima di disegnare l'arco e di ripristinare la tela in seguito, ha funzionato come un fascino :) – BOENDAGGER
La rotazione dello shader è stata un eccellente suggerimento. Ti allevia di dover fare ciò che ha fatto @BOENDAGGER con 'save' /' restore'. Basta impostare la rotazione dello shader una volta e il gioco è fatto. – bcorso