Android学习(二):字符串绘制基础

在APP中,因为绘制的字体在图像之上,用控件不好操作,所以只好自己画图了。

在APP中,本来有很多控件,并且有高亮点。

画图线程一般来说,不宜有过多的计算,故增加一个items类,以操作item对象池。

 

以下为run中的draw函数中的一部分:

 
  
Paint mPaint = new Paint();
mPaint.setAntiAlias(
true );
mPaint.setTextSize(
18 );
mPaint.setColor(Color.WHITE);

 

 
  
if (gameSelectItems.getPic(i) != null )
{
canvas.drawBitmap(gameSelectItems.getPic(i), gameSelectItems.getRect(i).left,
gameSelectItems.getRect(i).top,
null );
}

if (gameSelectItems.getStr(i) != null )
{
canvas.drawText(gameSelectItems.getStr(i), gameSelectItems.getRect(i).left,
gameSelectItems.getRect(i).top, mPaint);
}

嗯?!发现字没有写在图片上,而是显示的基线在Top点上(也就是Y轴上)。。。

奇怪的东西。

想了想,是不是基线对齐是在Y轴?

改用以下试验:

 

 
   
if (gameSelectItems.getPic(i) != null )
{
canvas.drawBitmap(gameSelectItems.getPic(i), gameSelectItems.getRect(i).left,
gameSelectItems.getRect(i).top,
null );
}

if (gameSelectItems.getStr(i) != null )
{
canvas.drawText(gameSelectItems.getStr(i), gameSelectItems.getRect(i).left,
gameSelectItems.getRect(i).bottom, mPaint);
}

发现字刚好写在图片下边框上。

看来,写字默认是左对齐,且基线在Y轴。

这样很好呀,不用去计算字体高度,不用担心不同语种字体上下偏移的问题。

那么如果X轴能居中对齐的话,就更完美了,试试看:

 
  
Paint mPaint = new Paint();
mPaint.setAntiAlias(
true );
mPaint.setTextSize(
18 );
mPaint.setTextAlign(Align.CENTER);
mPaint.setColor(Color.WHITE);

这么一来,发现在drawText(String,float X,float Y....)中,

X就是字符串的中间轴,

Y是字符串的基线,

如此完美!

转载于:https://www.cnblogs.com/ZW_SW/archive/2010/08/09/1795798.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值