skia是安卓原生的2d图形库,源码位于安卓源码/external/skia目录下。SkCanvas是核心类。
最近看了一个博客说是安卓从4.0开始绘制api就慢慢不用skia,而都改用openGL,因为skia这个东东不好硬件加速。
1、从SkCanvas.h开始,SkCanvas有两个构造函数:
explicit SkCanvas(SkDevice* device);//传入一个设备
explicit SkCanvas(const SkBitmap& bitmap);//传入一个位图
只用过第二种构造方式。。。
2、SkBitmap哪里来的?
SkBitmap bitmap;
bitmap.setConfig(SkBitmap::kARGB_8888_Config, 1280, 720);//设置宽高,以及每个像素点是啥格式
bitmap.setPixels(bitmapBuffer);//可以绑定一个现成的buffer,(unsigned char * buffer)
或者
bitmap.allocPixels(NULL);//或者申请一个空间
3、有了自己的SkCanvas
SkCanvas canvas(bitmap);
4、来画吧!
virtual void drawRect(const SkRect& rect, const SkPaint& paint);
virtual void drawText(const void* text, size_t byteLength, SkScalar x,SkScalar y, const SkPaint& paint);
。。。。。。
都要传入一个SkPaint
5、SkPaint哪里来的?
SkPaint paint;
paint.setXfermodeMode(SkXfermode::kSrc_Mode);//这个猜测是设混合方式的
可以设很多东东,查头文件吧~
6、画吧~
size_t byteLength=strlen(pTest);
canvas.drawText((HI_CHAR *)pTest,byteLength, 0, 20, paint);//写字是以左下角为起点的