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); }
效果如下:
notion image

一些小说明

  • SkScalar
    • 看一下定义:
      typedef float SkScalar;
      其实就是个float.
      我们平时使用的时候,可以直接使用float值,也可以使用SkIntToScalar(x)进行转换.
  • SkPoint
    • 可以使用静态构造方法构造:
      SkPoint::Make(320,320)
  • SkRect
    • 也是使用静态构造方法创建:
      SkRect::MakeXYWH(100,100,160,64)
      其他类型的构造方法其实也差不多,看一下源码和定义也就知道用途了.

源码地址

Skia的编译用SDL展示一张JPG图片
姜康
姜康
一个软件工程师
公告
type
status
date
slug
summary
tags
category
icon
password
🎉博客网站重新制作了🎉
👏欢迎更新体验👏