如何在 Android Canvas 中创建颜色模式

How to create a color patterns in Android Canvas

我正在研究 Android Canvas。我正在尝试在我的矩形中设置这种锯齿形颜色,我该如何实现。

Paint myPaint = new Paint();
myPaint.setColor(Color.RED);
myPaint.setStrokeWidth(10);
c.drawRect(100, 100, 200, 200, myPaint);

例如,您可以使用 BitmapShader:

init() {
Bitmap patternBMP = BitmapFactory.decodeResource(getResources(), resourseidofthebmpfile);
    BitmapShader patternBMPshader = new BitmapShader(patternBMP, 
        Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
}
    onDraw(...) {
    canvas.drawPath(drawPath, drawPaint);
}

你可以简单地一个一个地画出四个矩形。

public void init(){
    mPaint = new Paint();
    mPaint.setStyle(Paint.Style.FILL);
}

@Override
protected void onDraw(Canvas canvas) {
    for(int i = 0; i < 4; i += 1){
        if(i % 2 == 0){
            mPaint.setColor(Color.RED);
        } else {
            mPaint.setColor(Color.BLACK);
        }
        canvas.drawRect(100, 100 * i, 200, 100 * (i + 1), mPaint);
    }
}

Screen-shot:

您可以在 Bitmapshader 的帮助下轻松完成:

  • 首先拍一张这样的照片
  • 将这张图片放入drawable中并命名为stripes.
  • 现在在你的 canvas:

    上像这样应用 BitmapShader
    BitmapShader shader;
    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.stripes);
    shader  = new BitmapShader(bm, Shader.TileMode.REPEAT, Shader.TileMode.CLAMP);
    paint.setShader(shader);