安卓canvas

canvas图层与屏幕的关系

屏幕 Canvas图层--> Canvas 画图 --> 图层覆盖在屏幕上显示 -->图层清理图层上的元素
                    ^                                  |
                    |                                  |        
                    ------------------------------------
在Canvas与屏幕合成时,超出屏幕范围的图像是不会显示出来的。


Canvas图层一般 原点坐标为手机的左上角为(0,0),横为x轴,竖为y轴

基本方法:

rotate(degress,px,py)
对图层旋转:对xy轴旋转。(pxpy默认为图层的原点)
scale
缩放x/y坐标系密度 
skew 倾斜x/y轴的方向,参数为倾斜角度的tan值.改变x/y轴的方向。
不再是单一的垂直xy轴。
translate(dx,dy)
对图层移动,改变原坐标。dx,dy为改变的差值
clip 裁剪
不可逆操作
save / restore
保存:图层入栈  恢复:图层出栈(赋值给当前的canvas)
drawText(String text, float x, float y, Paint paint)
y为文字基线的起点纵坐标,不是文字的左上角y坐标。
x代表 与绘制的文字相对的x坐标(左中右)

Paint::setTextAlign(Align align);  
Align的取值为:Panit.Align.LEFT,Paint.Align.CENTER,Paint.Align.RIGHT

Panit.Align.LEFT :坐标x在文字的左边(默认).zzzz
Paint.Align.CENTER:坐标在文字的中间     zz.zz
Paint.Align.RIGHT:坐标x在文字的右边   zzzz.  

在paint中设置字体大小 setTextSize() 以px为单位 


所绘文字宽度、高度和最小矩形获取:
Paint.FontMetricsInt fm = paint.getFontMetricsInt();  
int top = baseLineY + fm.top;  
int bottom = baseLineY + fm.bottom;  
//所占高度  
int height = bottom - top; 

int width = paint.measureText(String text);  
//要配置好画笔的TextSize()
定点写字:
protected void onDraw(Canvas canvas) {  
    super.onDraw(canvas);  

    //主要计算出y坐标

    String text = "harvic\'s blog";  

    int top = 200;  
    int baseLineX = 0 ;  

    //设置paint  
    Paint paint = new Paint();  
    paint.setTextSize(120); //事先确定字体大小以px为单位  
    paint.setTextAlign(Paint.Align.LEFT);  

    //画top线  
    paint.setColor(Color.YELLOW);  
    canvas.drawLine(baseLineX, top, 3000, top, paint);  

    //计算出baseLine位置  
    Paint.FontMetricsInt fm = paint.getFontMetricsInt();  
    int baseLineY = top - fm.top;  

    //画基线  
    paint.setColor(Color.RED);  
    canvas.drawLine(baseLineX, baseLineY, 3000, baseLineY, paint);  

    //写文字  
    paint.setColor(Color.GREEN);  
    canvas.drawText(text, baseLineX, baseLineY, paint);  
}

参考: http://blog.csdn.net/harvic880925/article/details/50423762

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值