type
status
date
slug
summary
tags
category
icon
password
skia的图形绘制API和我们平时使用的各种平台的Canvas API几乎没什么区别.
看名字一般也就能知道具体是什么绘制操作了.
例子
#include "demo.h" #include "include/core/SkBitmap.h" #include "include/core/SkImageInfo.h" #include "include/core/SkFont.h" #include "include/core/SkImage.h" #include "utils/file_utils.h" void drawDemo() { SkBitmap bitmap; bitmap.setInfo(SkImageInfo::MakeN32(640, 640, kOpaque_SkAlphaType)); bitmap.allocPixels(); SkCanvas canvas(bitmap); canvas.clear(SK_ColorWHITE); SkPaint paint; paint.setAntiAlias(true); paint.setColor(SK_ColorBLUE); canvas.drawLine(SkPoint::Make(0, 0), SkPoint::Make(640, 640), paint); paint.setColor(SK_ColorBLACK); paint.setStrokeWidth(20); canvas.drawPoint(SkPoint::Make(320, 320), paint); paint.setStrokeWidth(2); paint.setColor(SK_ColorRED); paint.setStyle(SkPaint::Style::kStroke_Style); canvas.drawCircle(320, 320, 32, paint); canvas.drawCircle(SkPoint::Make(320, 320), 64, paint); paint.setColor(SK_ColorRED); canvas.drawRect(SkRect::MakeXYWH(100, 100, 160, 64), paint); canvas.drawRoundRect(SkRect::MakeXYWH(360, 360, 120, 120), SkIntToScalar(10), SkIntToScalar(10), paint); paint.setStrokeWidth(1); SkFont font; font.setSize(SkIntToScalar(23)); canvas.drawString("SkiaFly", 200, 200, font, paint); saveBitmapAsPng("draw_basic_shape.png", bitmap); }
效果如下:
一些小说明
SkScalar
看一下定义:
typedef float SkScalar;
其实就是个float.
我们平时使用的时候,可以直接使用float值,也可以使用
SkIntToScalar(x)
进行转换.SkPoint
可以使用静态构造方法构造:
SkPoint::Make(320,320)
SkRect
也是使用静态构造方法创建:
SkRect::MakeXYWH(100,100,160,64)
其他类型的构造方法其实也差不多,看一下源码和定义也就知道用途了.
源码地址
- 作者:姜康
- 链接:https://jiangkang.tech/article/35e80571-8164-4ead-8f77-c9c002ec0f90
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章