【问题标题】:Create a bitmap of text with shadow创建带阴影的文本位图
【发布时间】:2014-06-18 07:34:43
【问题描述】:

我想创建一个带阴影的文本位图,但我无法获得好的结果。问题是,当我直接画文字的时候,看起来不错,但是当我把文字画成位图,再画位图时,就很难看。

代码:

public class MyView extends View {
    private Paint paint;
    private Bitmap bitmap;

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public void init(){
        paint = new Paint();
        paint.setColor(Color.BLACK);
        paint.setTextSize(50);
        paint.setAntiAlias(true);
        paint.setTypeface(Typeface.create("HELVETICA", Typeface.NORMAL));
        paint.setShadowLayer(30, 0, 0, Color.BLACK);

        bitmap = Bitmap.createBitmap(500, 300, Bitmap.Config.ARGB_8888); 
        Canvas canvas2 = new Canvas(bitmap);
        canvas2.drawText("Dec Use", 100, 100, paint);
    }

    @Override
    protected void onDraw(Canvas canvas){
        super.onDraw(canvas);

        final boolean useBitmap = true;
        if(useBitmap){
            canvas.drawBitmap(bitmap, 0, 0, null);
        }
        else{
            canvas.drawText("Dec Use", 100, 100, paint);
        }
    }
}

useBitmap设置为false时,结果如下所示

useBitmap设置为true时,结果如下所示

我错过了什么吗?

【问题讨论】:

  • 有人找到解决办法吗?

标签: android text bitmap draw shadow


【解决方案1】:

质量损失似乎与位图有关。 您可以通过使用灰色阴影更大的位图(即使这意味着之后重新设置)来获得更好的效果。

    bitmap = Bitmap.createBitmap(2000, 2000, Bitmap.Config.ARGB_8888); 
    Canvas canvas2 = new Canvas(bitmap);
    canvas2.drawText("Dec Use", 200, 200, paint);

    paint.setShadowLayer(20, 0, 0, Color.GRAY);
    canvas2.drawText("Dec Use", 200, 200, paint);

Related answer

【讨论】:

  • 灰色使阴影更暗,因此看起来更好。但我认为它并不能真正解决这个问题。
  • 问题在于位图的质量,这可以通过更大的位图来解决(或 Bitmap.Config 技巧,但我不这么认为)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-16
相关资源
最近更新 更多