Tôi có một SweepGradient định nghĩa làAndroid SweepGradient
circle_paint.setShader(new SweepGradient(getWidth()/2, getHeight()/2, new int[] { circle_start_color, circle_end_color}, new float[] { 0f, 1f}))
áp dụng cho một vòm định nghĩa là
canvas.drawArc(circle_bounds, circle_start_perc*360f, circle_end_perc*360f, true, circle_paint);
này workes tốt, nhưng tôi cần những vòm để bắt đầu vẽ từ phía trên cùng của màn hình, tức là
canvas.drawArc(circle_bounds, ((circle_start_perc*360f)-90f)%360, circle_end_perc*360f, true, circle_paint);
Vấn đề là SweepGradient dường như vẫn bắt đầu ở 0 độ và tôi cần nó bắt đầu lúc 270 độ (tương tự như bản dịch được thực hiện trên bản vẽ cung tròn). Nói cách khác, nếu tôi có một gradient từ màu trắng sang màu xanh, tôi cần phần trên của hình cung được sơn màu trắng ở phần cuối cùng của hình cung được sơn màu xanh dương. Tôi có thể làm cái này như thế nào?
Cảm ơn. Tôi chỉ xoay khung hình trước khi tôi vẽ vòm và khôi phục lại khung hình sau đó, làm việc như một nét duyên dáng :) – BOENDAGGER
Xoay vòng là một gợi ý tuyệt vời. Làm giảm bạn phải làm những gì @BOENDAGGER đã làm với 'restore' /' restore'. Chỉ cần đặt xoay vòng đổ bóng một lần và bạn đã hoàn tất. – bcorso