5

我想将一组随机小图案的重复图案限制在特定区域。我正在使用画布创建一个对象( CustomView ),我知道如何使用 xml 代码在布局上重复模式。

<bitmap
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:src="@drawable/patterntwo"
  android:tileMode="repeat" />

这不适用于画布。

我本质上想使用位图作为 customview 的背景图像,并且想在 X 和 Y 视图方向上重复位图。

看这张图片

在此处输入图像描述

4

2 回答 2

7

请尝试使用此代码:-

paint = new Paint(Paint.FILTER_BITMAP_FLAG);
Shader mShader1 = new BitmapShader(bitmap, Shader.TileMode.REPEAT,Shader.TileMode.REPEAT);
paint.setShader(mShader1);
于 2012-07-10T09:35:57.690 回答
2

您可以使用重复的背景位图制作自定义组件:

BitmapDrawable bitmapBg = new BitmapDrawable(BitmapFactory.decodeResource(
            getResources(), R.drawable.repeatbg));
bitmapBg.setTileModeX(Shader.TileMode.REPEAT);
image.setBackgroundDrawable(bitmapBg);

你可以用你想要的图像制作一个面具,比如那个三角形和你的背景。

public static Bitmap getMaskedContactImage(Context context,
        Bitmap contactImageBitmap, int maskToBeApplied) {
    Bitmap mask = BitmapFactory.decodeResource(context.getResources(),
            maskToBeApplied);
    Bitmap output = Bitmap.createBitmap(mask.getWidth(), mask.getHeight(),
            Config.ARGB_8888);
    final Rect finalRect = new Rect(0, 0, contactImageBitmap.getWidth(),
            contactImageBitmap.getHeight());
    final Rect originRect = new Rect(0, 0, mask.getWidth(),
            mask.getHeight());
    Canvas canvas = new Canvas(output);

    Paint xferPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    xferPaint.setColor(Color.BLACK);

    xferPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));

    canvas.drawBitmap(contactImageBitmap, finalRect, originRect, null);
    canvas.drawBitmap(mask, originRect, originRect, xferPaint);

    contactImageBitmap.recycle();
    mask.recycle();

    return output;
}

这将使用黑色是最终图像的蒙版。

如果我没有误解,那可以实现您在捕获中显示的内容。

问候,亚历克斯

于 2012-07-06T08:24:20.227 回答