您的位置:首页 > 其它

安卓canvas

2016-04-20 16:47 309 查看

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);
}


参考: /article/3594531.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: