如何在 Android Canvas 上设置文本背景/轮廓

问题描述 投票:0回答:0

我试过并尝试用 Canvas.drawText(...) 和 文本显示正确的前景色(黑色),但也有 字母后面的白色影子。无法摆脱白影。 我只想看到黑色字母和中间的灰色背景 这些信。 你知道如何以编程方式完成吗?

想附上一张图片,但声誉太低:-) 阴影似乎是某种笔画轮廓或轮廓。 白色阴影的宽度比宽度小很多 字母的黑色部分。

我尝试了具有填充样式、描边样式和填充和描边样式的 Paint:s。 所有结果都会产生白色阴影。

package xxx.xxx;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends Activity  {

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(new MyView(this));
    }

    public class MyView extends View
    {
        Paint paint = null;
        public MyView(Context context)
        {
            super(context);
            paint = new Paint();
        }

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

            Paint grayPaint = new Paint();
            grayPaint.setStyle(Paint.Style.FILL);
            grayPaint.setColor(Color.GRAY);
            Rect rect = new Rect(0, 0, (int) 1000, (int) 500);
            canvas.drawRect(rect, grayPaint);

            Paint strokePaint = new Paint();
            strokePaint.setTextSize(90F);
            strokePaint.setColor(Color.BLACK);
            strokePaint.setStyle(Paint.Style.STROKE);
            canvas.drawText("Stroke style", 100, 100, strokePaint);

            Paint fillPaint = new Paint();
            fillPaint.setTextSize(90F);
            fillPaint.setColor(Color.BLACK);
            fillPaint.setStyle(Paint.Style.FILL);
            canvas.drawText("Fill style", 100, 200, fillPaint);

            Paint fillAndStrokePaint = new Paint();
            fillAndStrokePaint.setTextSize(90F);
            fillAndStrokePaint.setColor(Color.BLACK);
            fillAndStrokePaint.setStyle(Paint.Style.FILL_AND_STROKE);
            canvas.drawText("Fill and stroke style", 100, 300, fillAndStrokePaint);
        }
    }
}
Trying to sketch the letter 'l' here, how it looks:

.............
....wwwww....
....wBBBw....
....wBBBw....
....wBBBw....
....wBBBw....
....wBBBw....
....wBBBw....
....wBBBw....
....wBBBw....
....wBBBw....
....wBBBw....
....wBBBw....
....wwwww....
.............

. = gray
w = white
B = black

android android-canvas
© www.soinside.com 2019 - 2024. All rights reserved.