2014-06-13 30 views
0

我是一名android开发人员。我正在做一个游戏,我需要改变我的字母样式,如下图所示。如何在画布添加渐变如图片letters将渐变设置为Canvas.drawtext

将此代码添加渐变,而是整个视图。如果在底部的信件里,他们是白色的,如果在顶部的信件他们是黑人

Paint p = new Paint(); 
// start at 0,0 and go to 0,max to use a vertical 
// gradient the full height of the screen. 
p.setShader(new LinearGradient(0, 0, 0, getHeight(), Color.BLACK, Color.WHITE, Shader.TileMode.MIRROR)); 
canvas.drawPaint(p); 
+0

使用Paint.setShader – pskink

+0

是的,我这样做,而我得到的是整个观点是影响。只有在某些部分视图中,字母才会受到影响。我只想要字母受梯度影响 – user3189504

+0

发布您的代码然后 – pskink

回答

1

尝试这样的事:

class V extends View { 
    private String text = "Back To The Future"; 
    private Paint paint; 
    public V(Context context) { 
     super(context); 
     paint = new Paint(); 
     paint.setTextSize(32); 
    } 

    @Override 
    protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
     Rect bounds = new Rect(); 
     paint.getTextBounds(text, 0, text.length(), bounds); 
     Shader shader = new LinearGradient(0, paint.getTextSize() + bounds.top, 0, paint.getTextSize(), Color.RED, Color.YELLOW, TileMode.MIRROR); 
     paint.setShader(shader); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawText(text, 0, paint.getTextSize(), paint); 
    } 
} 
+0

@ user3189504是否有效? – pskink