首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >打印文字不清晰!

打印文字不清晰!

原创
作者头像
薇芯公重号 AI创造财富
发布2025-08-29 10:44:16
发布2025-08-29 10:44:16
3200
举报

要打印的内容是:有文字,有图片,二维码 那么,一张视图里,有文字,有图片,二维码,绘制成一张bitmap. 跟分别绘制三张图片,文字绘制一张bitmap,图片绘制成一张bitmap,二维码一张bitmap. 相比那种打印会更清晰些,为什么?

分开绘制bitmap,跟放在一张bitmap里 ,三张组合成一张的bitmap,会比分别 绘制的bitmap会更清晰?

  • 方案 A:一张 View 里把文字、图片、二维码全都绘制进去 → 生成 一张 bitmap
  • 方案 B:分别生成三张 bitmap(文字一张,图片一张,二维码一张),然后 直接分别打印(而不是再合成)。

/**

* The Paint class holds the style and color information about how to draw

* geometries, text and bitmaps.

*/

到底是打印文字不清晰还是什么原因?文字不清晰,那么是图不清晰,就把图修清晰。

代码语言:txt
复制
/**
 * 客户反馈在使用XML文本TextView的时候不清晰。
 * 打印文字。改成把XML文件里的TexView换成VectorTextView
 * 直接使用纯黑字体,测试来看确实是清晰些。所以在xml的视图里使用这个文本替换TextView
 */
public class VectorTextView extends androidx.appcompat.widget.AppCompatTextView {

    private Paint pathPaint;

    public VectorTextView(Context context) {
        super(context);
        init();
    }

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

    public VectorTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        pathPaint = new Paint();
        pathPaint.setStyle(Paint.Style.FILL);
        pathPaint.setColor(Color.BLACK);           // 使用纯黑
        pathPaint.setHinting(Paint.HINTING_OFF);   // 关闭 hinting,保证轮廓不偏移
        pathPaint.setAntiAlias(true);              // 可选抗锯齿,可保留细节(灰度打印机有用)
    }

    @Override
    protected void onDraw(Canvas canvas) {
        String text = getText().toString();
        float x = 0;
        float y = getTextSize();

        Path textPath = new Path();
        getPaint().getTextPath(text, 0, text.length(), x, y, textPath);

        canvas.drawPath(textPath, pathPaint);
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档