Canvas.drawText 怎么输出是空心字?

时间:2022-07-18 06:11:58
protected void onDraw(Canvas canvas) 
    {
     Paint paint = new Paint();
     Typeface font;
                     
                     font = Typeface.create(Typeface.DEFAULT, Typeface.NORMAL);
                     paint.setTypeface(font);
                     canvas.drawText("软件测试", 10, 10, paint);
}

输出的中文,怎么是空心字体,手机系统已经升级到最新版,没有升级以前是正常的。改变 font = Typeface.create(Typeface.DEFAULT, Typeface.NORMAL);  里面的字体选项也都没有用,究竟怎么回事?

10 个解决方案

#1


你可以找个空心字体,比如华文彩云

#2


引用 1 楼 DrSmart 的回复:
你可以找个空心字体,比如华文彩云


我是不想要空心字体,默认是调用系统字体显示,就出来空心字体了,难道系统默认中文字体都是空心吗?

#3


有人知道为什么吗?

#4



paint.setStyle(Style.FILL);

#5


引用 4 楼 zk20052009 的回复:

paint.setStyle(Style.FILL);


这样的话,文字和背景就混在一起了,看不到字了!

#6


引用 5 楼 fanx 的回复:
Quote: 引用 4 楼 zk20052009 的回复:


paint.setStyle(Style.FILL);


这样的话,文字和背景就混在一起了,看不到字了!

你的意思是drawText和背景用的同一个paint?
那drawText可以用单独的paint
paint默认style就是FILL

#7


没有遇到过这种情况 上个截图看看

多设置一些 paint 属性, 颜色 大小 宽度 啥的, 

#8


引用 7 楼 han1202012 的回复:
没有遇到过这种情况 上个截图看看

多设置一些 paint 属性, 颜色 大小 宽度 啥的, 


试过了,没用。手机系统是安卓 4.4.2,多个手机都是这样的,没升级系统以前都是正常的。

#9


我也遇到了,很郁闷,解决了吗?

#10


刚刚回复你,我就找到解决办法了。   
                c.beginPath();
                c.fillStyle = "purple";
                c.font = "bold 30px Gautami";
                c.clearRect(w / 2 - 20, 0, mc.width, 30);
                c.fillText("00:" + miaonum + ":" + num, w / 2 - 20, 29);
                c.closePath();

而错误的是:  
  c.beginPath();
                c.strokeStyle = "purple";
                c.font = "bold 30px Gautami";
                c.clearRect(w / 2 - 20, 0, mc.width, 30);
                c.strokeText("00:" + miaonum + ":" + num, w / 2 - 20, 29);
                c.closePath();
                c.stroke();

#1


你可以找个空心字体,比如华文彩云

#2


引用 1 楼 DrSmart 的回复:
你可以找个空心字体,比如华文彩云


我是不想要空心字体,默认是调用系统字体显示,就出来空心字体了,难道系统默认中文字体都是空心吗?

#3


有人知道为什么吗?

#4



paint.setStyle(Style.FILL);

#5


引用 4 楼 zk20052009 的回复:

paint.setStyle(Style.FILL);


这样的话,文字和背景就混在一起了,看不到字了!

#6


引用 5 楼 fanx 的回复:
Quote: 引用 4 楼 zk20052009 的回复:


paint.setStyle(Style.FILL);


这样的话,文字和背景就混在一起了,看不到字了!

你的意思是drawText和背景用的同一个paint?
那drawText可以用单独的paint
paint默认style就是FILL

#7


没有遇到过这种情况 上个截图看看

多设置一些 paint 属性, 颜色 大小 宽度 啥的, 

#8


引用 7 楼 han1202012 的回复:
没有遇到过这种情况 上个截图看看

多设置一些 paint 属性, 颜色 大小 宽度 啥的, 


试过了,没用。手机系统是安卓 4.4.2,多个手机都是这样的,没升级系统以前都是正常的。

#9


我也遇到了,很郁闷,解决了吗?

#10


刚刚回复你,我就找到解决办法了。   
                c.beginPath();
                c.fillStyle = "purple";
                c.font = "bold 30px Gautami";
                c.clearRect(w / 2 - 20, 0, mc.width, 30);
                c.fillText("00:" + miaonum + ":" + num, w / 2 - 20, 29);
                c.closePath();

而错误的是:  
  c.beginPath();
                c.strokeStyle = "purple";
                c.font = "bold 30px Gautami";
                c.clearRect(w / 2 - 20, 0, mc.width, 30);
                c.strokeText("00:" + miaonum + ":" + num, w / 2 - 20, 29);
                c.closePath();
                c.stroke();