android 画布缩放影响文字,android-canvas(一) scale(缩放)的使用

在android下缩放可以实现onDraw下的画笔画的内容变小,这里以文本为例进行讲解。

scale提供的方法

在cale提供了两个方法

public void scale(float sx, float sy)

public final void scale(float sx, float sy, float px, float py)

scale(float sx, float sy)

这是一个以0,0为基准的缩放,它会以父布局的坐标(0,0)到(float sx, float sy)做为

一个矩形框,如果是缩放,会移动所画的文字的位置下面的代码onDraw()画

的缩放0.5的布局

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

canvas.drawColor(Color.GREEN);

canvas.drawText("base", 0, 400, paintOuterText);

canvas.scale(1.0F, 0.5F);

canvas.drawText("base-0.5" , 0, 400, paintOuterText);

canvas.scale(1.0F, 0.5F);

canvas.drawText("base-0.5*0.5" , 0, 400, paintOuterText);

}

效果图如下,可以看出来第一次文字的缩放显示的位置是400的一半,而第二次

显示是200的一半

30d55eb2a0eeb1a0988b7ea0db65f3ad.png

如果我们想要每次都画在400的一半上,那可以这么处理,引入save()和restore()机制,

在第一次缩放画,保存画布的状态,第一次画完时,还原画布的状态

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

canvas.drawColor(Color.GREEN);

canvas.drawText("base", 0, 400, paintOuterText);

canvas.save();

canvas.scale(1.0F, 0.5F);

canvas.drawText(" base-0.5" , 0, 400, paintOuterText);

canvas.restore();

canvas.scale(1.0F, 0.5F);

canvas.drawText("base-0.5*0.5" , 0, 400, paintOuterText);

}

效果图如下

f27bddf2b01277b1dc4ba4b2ccc67f31.png

scale(float sx, float sy, float px, float py)

这是一个定义一个以某个坐标为基准的缩放,他可以实现以某一个坐标的缩放,这个是我们

需要的效果

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

canvas.drawColor(Color.GREEN);

canvas.drawText("base", 0, 400, paintOuterText);

canvas.scale(1.0F, 0.5F,0,400);

canvas.drawText(" base-0.5", 0, 400, paintOuterText);

canvas.scale(1.0F, 0.5F,0,400);

canvas.drawText("base-0.5*0.5", 0, 400, paintOuterText);

}

效果图如下

3dd825ce9e05c7ce5b0265bfdc9bd43c.png

标签:canvas,scale,缩放,float,0.5,400,android

来源: https://blog.youkuaiyun.com/zhjin8510/article/details/100533755

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值