1

我正在尝试执行您在图片中看到的以下操作,但我想要一个白色方块而不是那个黑色方块:

在此处输入图像描述

到目前为止,这是我的代码:

public class SmallWhiteThing extends View {

Context context;

Paint paint = new Paint();

// CONSTRUCTOR
public SmallWhiteThing(Context context) {
    super(context);
    setFocusable(true);
}

public SmallWhiteThing(Context context, AttributeSet attrs)
{
    super(context, attrs);
    this.context = context;
}

public SmallWhiteThing(Context context, AttributeSet attrs, int defStyle)
{
    super(context, attrs, defStyle);
    this.context = context;
}

@Override
protected void onDraw(Canvas canvas) {

    Paint paint = new Paint();
    BitmapFactory.Options options = new BitmapFactory.Options();  
    options.inPreferredConfig = Bitmap.Config.ARGB_8888;

    Bitmap b = Bitmap.createBitmap(120, 120, Bitmap.Config.ALPHA_8);
    Canvas c = new Canvas(b);   
    c.drawColor(Color.WHITE);

    paint.setStrokeWidth(0);
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
    paint.setTextSize(40);
    paint.setAntiAlias(true);

    c.drawText("Hello", 30, 30, paint);

    canvas.drawBitmap(b, 140, 270, paint);
}

}

我试过了,你可以看到: c.drawColor(Color.WHITE); 但没有任何运气。

提示非常感谢。

我正在尝试别的东西,我得到了这个: 在此处输入图像描述

代码:

Bitmap b = Bitmap.createBitmap(120, 120, Bitmap.Config.ALPHA_8);

    Canvas c = new Canvas(b);   
    c.drawColor(Color.WHITE);
    paint.setColor(Color.WHITE);
    paint.setStrokeWidth(0f);
    c.drawRect(0, 0, 150, 150, paint);

    canvas.drawBitmap(b, 100, 100, paint);

    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC));
    paint.setTextSize(40);
    paint.setAntiAlias(true);
    paint.setColor(Color.WHITE);
    canvas.drawText("Helloo", 100, 200, paint);
4

1 回答 1

3

给需要的人。这是有效的:

当前用法(在屏幕中填充图像视图):

//Params: Text, textSize
createBlabla("Text to show", 35);


public void createBlabla(String text, int fontSize){        
    int paddingRight = 10;
    int paddingLeft = 5;
    int paddingBottom = 5;

    //Paint config
    Paint paint = new Paint();
    paint.setTextSize(fontSize);
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT));
    paint.setAntiAlias(true);

    Bitmap largeWhiteBitmap = Bitmap.createBitmap((int) paint.measureText(text) + paddingRight, fontSize + paddingRight, Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(largeWhiteBitmap);
    canvas.drawColor(Color.WHITE); 

    canvas.drawText(text, paddingLeft, fontSize, paint);

    ImageView imv = (ImageView)MainActivity.this.findViewById(R.id.imageView1);
    imv.setImageBitmap(largeWhiteBitmap);
}

在此处输入图像描述

请注意,您在屏幕中看到的是一个完整的相对布局,中间有一个 imageView。此 imageview 使用前面的代码获取 Bitmap 作为 Image。relativeLayout 具有绿色背景。

于 2013-11-11T21:24:16.497 回答