Cairo 矢量绘图库 API 文档(中文,勇芳原创)

2026-2-3 / 0 评论 / 350 阅读

上下文的创建与销毁

Declare Function cairo_create(ByVal target As cairo_surface_t Ptr) As cairo_t Ptr
创建核心绘图上下文。需要一个 cairo_surface_t 作为“画布”。返回值是所有绘图操作的起点。
Declare Function cairo_reference(ByVal cr As cairo_t Ptr) As cairo_t Ptr
增加上下文引用计数。当多个部分需要共享同一个上下文时使用,防止被意外销毁。
Declare Sub cairo_destroy(ByVal cr As cairo_t Ptr)
减少引用计数并可能销毁上下文。与 create 或 reference 配对使用,管理资源释放。
Declare Function cairo_get_reference_count(ByVal cr As cairo_t Ptr) As ULong
查询当前的引用计数。主要用于调试内存管理问题。

用户数据管理 (高级功能)

Declare Function cairo_get_user_data(ByVal cr As cairo_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr) As Any Ptr
给上下文绑定一块自定义数据。通过唯一的 key 关联一个指针 data,并可指定一个销毁回调函数 destroy。
Declare Function cairo_set_user_data(ByVal cr As cairo_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr, ByVal user_data As Any Ptr, ByVal destroy As cairo_destroy_func_t) As cairo_status_t
通过键取出之前绑定的自定义数据。

状态管理

Declare Sub cairo_save(ByVal cr As cairo_t Ptr) '保存当前所有绘图状态。将当前的颜色、线宽、变换矩阵等压入栈。
Declare Sub cairo_restore(ByVal cr As cairo_t Ptr) '恢复到上次保存的状态。从栈顶弹出状态并应用,与 save 成对使用。

分组操作

Declare Sub cairo_push_group(ByVal cr As cairo_t Ptr)
开始一个新的临时绘制组。之后的所有绘制将在一个独立的“透明层”上进行。
Declare Sub cairo_push_group_with_content(ByVal cr As cairo_t Ptr, ByVal content As cairo_content_t)
开始一个指定内容类型的绘制组。可以指定这个临时层是纯色(CAIRO_CONTENT_COLOR)、带透明度(CAIRO_CONTENT_COLOR_ALPHA)等。
Declare Function cairo_pop_group(ByVal cr As cairo_t Ptr) As cairo_pattern_t Ptr
结束临时组并返回图案。临时层被结束并包装成一个 cairo_pattern_t,可以后续用作笔刷或源。
Declare Sub cairo_pop_group_to_source(ByVal cr As cairo_t Ptr)
结束临时组并直接设为绘制源。这是最常用的流程:结束临时层,并立即将其设置为接下来绘制的“墨水”。

设置绘制源:控制“墨水”内容

Declare Sub cairo_set_source(ByVal cr As cairo_t Ptr, ByVal source As cairo_pattern_t Ptr)
设置任意图案作为绘制源。source 可以是纯色、渐变(cairo_pattern_create_linear/radial)、图像或之前的分组结果(cairo_pop_group)。最通用。
Declare Sub cairo_set_source_rgb(ByVal cr As cairo_t Ptr, ByVal red As Double, ByVal green As Double, ByVal blue As Double)
设置不透明的纯色源。RGB值范围 0.0 ~ 1.0。例如 (1.0, 0.0, 0.0) 为纯红。
Declare Sub cairo_set_source_rgba(ByVal cr As cairo_t Ptr, ByVal red As Double, ByVal green As Double, ByVal blue As Double, ByVal Alpha As Double)
设置带透明度的纯色源。Alpha值范围 0.0(全透明)~ 1.0(不透明)。例如 (0.0, 1.0, 0.0, 0.5) 为半透明绿。
Declare Sub cairo_set_source_surface(ByVal cr As cairo_t Ptr, ByVal surface As cairo_surface_t Ptr, ByVal x As Double, ByVal y As Double)
使用另一个图像表面作为绘制源。x, y 参数是源表面左上角相对于目标表面坐标系的偏移。常用于平铺图案或图像合成。

设置操作符:控制“混合模式”

Declare Sub cairo_set_operator(ByVal cr As cairo_t Ptr, ByVal op As cairo_operator_t)
定义了新绘制的像素如何与画布上已有像素进行混合,相当于图形软件中的“图层混合模式”。
常用操作符 (cairo_operator_t) 效果说明 类比图形软件

  • CAIRO_OPERATOR_OVER (默认) 正常叠加。根据 Alpha 通道混合,最常用。 “正常”模式
  • CAIRO_OPERATOR_SOURCE 直接替换。忽略目标原有内容,直接覆盖。 “替换”
  • CAIRO_OPERATOR_ADD 相加。将颜色值相加,产生变亮效果。 “线性减淡(添加)”
  • CAIRO_OPERATOR_MULTIPLY 正片叠底。颜色值相乘,产生变暗效果。 “正片叠底”
  • CAIRO_OPERATOR_CLEAR 清除。将重叠区域设为完全透明。 “清除”

设置容差:控制“计算精度”

Declare Sub cairo_set_tolerance(ByVal cr As cairo_t Ptr, ByVal tolerance As Double)
影响路径绘制(尤其是曲线)时的渲染精度和性能平衡。
作用:定义路径(尤其是贝塞尔曲线)被转换为像素时允许的最大误差。

  • 值越小:曲线拟合越精确,渲染质量越高,但计算成本更高。
  • 值越大:使用更少的线段来近似曲线,渲染速度更快,但可能不够平滑。
  • 默认值:通常为 0.1。对于大多数屏幕显示,此值已足够。仅在需要极高精度(如大幅面打印)或极端性能优化时才需调整。

抗锯齿

Declare Sub cairo_set_antialias(ByVal cr As cairo_t Ptr, ByVal antialias As cairo_antialias_t)
枚举类型定义

Enum cairo_antialias_t
    CAIRO_ANTIALIAS_DEFAULT     = 0  ' 使用默认的抗锯齿算法
    CAIRO_ANTIALIAS_NONE        = 1  ' 不使用抗锯齿(锯齿边缘)
    CAIRO_ANTIALIAS_GRAY        = 2  ' 使用灰度抗锯齿(默认)
    CAIRO_ANTIALIAS_SUBPIXEL    = 3  ' 使用子像素抗锯齿(需要LCD屏幕)
    CAIRO_ANTIALIAS_FAST        = 4  ' 快速抗锯齿
    CAIRO_ANTIALIAS_GOOD        = 5  ' 高质量抗锯齿
    CAIRO_ANTIALIAS_BEST        = 6  ' 最佳质量抗锯齿
End Enum

获取当前抗锯齿设置
Declare Function cairo_get_antialias(ByVal cr As cairo_t Ptr) As cairo_antialias_t

填充规则

Declare Sub cairo_set_fill_rule(ByVal cr As cairo_t Ptr, ByVal fill_rule As cairo_fill_rule_t)
' 填充规则枚举类型

Enum cairo_fill_rule_t
    CAIRO_FILL_RULE_WINDING   = 0  ' 缠绕规则(默认)
    CAIRO_FILL_RULE_EVEN_ODD  = 1  ' 奇偶规则
End Enum

获取当前填充规则
Declare Function cairo_get_fill_rule(ByVal cr As cairo_t Ptr) As cairo_fill_rule_t

设置线宽

Declare Sub cairo_set_line_width(ByVal cr As cairo_t Ptr, ByVal Width As Double)

  • 设置绘制线条时的宽度(以用户空间单位表示)
  • 影响所有后续的描边操作(cairo_stroke)
  • 默认线宽为 2.0
  • 线宽受当前变换矩阵影响(缩放会影响实际显示宽度)
    获取当前线宽

Declare Function cairo_get_line_width(ByVal cr As cairo_t Ptr) As Double

设置线帽样式

Declare Sub cairo_set_line_cap(ByVal cr As cairo_t Ptr, ByVal line_cap As cairo_line_cap_t)
线帽样式枚举

Enum cairo_line_cap_t
    CAIRO_LINE_CAP_BUTT   = 0  ' 平头(默认)
    CAIRO_LINE_CAP_ROUND  = 1  ' 圆头
    CAIRO_LINE_CAP_SQUARE = 2  ' 方头
End Enum

获取当前线帽样式
Declare Function cairo_get_line_cap(ByVal cr As cairo_t Ptr) As cairo_line_cap_t

设置线条端点(线帽)的绘制样式,影响所有后续的描边操作。

线帽样式详解:

  1. CAIRO_LINE_CAP_BUTT - 平头(默认)
    线条在端点处被精确截断
    不超出端点位置
    适用于精确对齐的场景
  2. CAIRO_LINE_CAP_ROUND - 圆头
    在线条端点处绘制半圆形
    端点超出原始端点位置(超出半个线宽)
    视觉效果更柔和
  3. CAIRO_LINE_CAP_SQUARE - 方头
    在线条端点处绘制方形
    端点超出原始端点位置(超出半个线宽)
    与圆头类似,但端点为方形

线条样式设置

declare sub cairo_set_line_join(byval cr as cairo_t ptr, byval line_join as cairo_line_join_t)
设置线条连接样式

Enum cairo_line_join_t
    CAIRO_LINE_JOIN_MITER = 0  ' 尖角连接(默认)
    CAIRO_LINE_JOIN_ROUND = 1  ' 圆角连接
    CAIRO_LINE_JOIN_BEVEL = 2  ' 斜角连接
End Enum

Declare Sub cairo_set_dash(ByVal cr As cairo_t Ptr, ByVal dashes As Const Double Ptr, ByVal num_dashes As Long, ByVal offset As Double)
设置虚线模式
declare sub cairo_set_miter_limit(byval cr as cairo_t ptr, byval limit as double)
设置尖角限制,控制尖角连接的最大长度,当尖角过长时自动转换为斜角连接,默认值通常为 10.0

坐标变换

基本变换

declare sub cairo_translate(byval cr as cairo_t ptr, byval tx as double, byval ty as double)
平移
Declare Sub cairo_scale(ByVal cr As cairo_t Ptr, ByVal sx As Double, ByVal sy As Double)
缩放
Declare Sub cairo_rotate(ByVal cr As cairo_t Ptr, ByVal angle As Double)
旋转(弧度)

矩阵操作

Declare Sub cairo_transform(ByVal cr As cairo_t Ptr, ByVal matrix As Const cairo_matrix_t Ptr)
应用矩阵变换
Declare Sub cairo_set_matrix(ByVal cr As cairo_t Ptr, ByVal matrix As Const cairo_matrix_t Ptr)
设置变换矩阵
declare sub cairo_identity_matrix(byval cr as cairo_t ptr)
重置为单位矩阵

坐标转换

declare sub cairo_user_to_device(byval cr as cairo_t ptr, byval x as double ptr, byval y as double ptr)
坐标转换,用户坐标 ↔ 设备坐标转换
declare sub cairo_user_to_device_distance(byval cr as cairo_t ptr, byval dx as double ptr, byval dy as double ptr)
距离转换,用户坐标 ↔ 设备坐标转换
Declare Sub cairo_device_to_user(ByVal cr As cairo_t Ptr, ByVal x As Double Ptr, ByVal y As Double Ptr)
坐标转换,用户坐标 ↔ 设备坐标转换
declare sub cairo_device_to_user_distance(byval cr as cairo_t ptr, byval dx as double ptr, byval dy as double ptr)
距离转换,用户坐标 ↔ 设备坐标转换

路径操作

路径创建

Declare Sub cairo_new_path(ByVal cr As cairo_t Ptr)
开始新路径
Declare Sub cairo_new_sub_path(ByVal cr As cairo_t Ptr)
开始新的子路径
Declare Sub cairo_close_path(ByVal cr As cairo_t Ptr)
闭合当前路径

直线路径

declare sub cairo_move_to(byval cr as cairo_t ptr, byval x as double, byval y as double)
移动到起点
declare sub cairo_line_to(byval cr as cairo_t ptr, byval x as double, byval y as double)
画直线到
Declare Sub cairo_rel_move_to(ByVal cr As cairo_t Ptr, ByVal dx As Double, ByVal dy As Double)
相对移动
declare sub cairo_rel_line_to(byval cr as cairo_t ptr, byval dx as double, byval dy as double)
相对画线

曲线路径

declare sub cairo_curve_to(byval cr as cairo_t ptr, byval x1 as double, byval y1 as double, byval x2 as double, byval y2 as double, byval x3 as double, byval y3 as double)
三次贝塞尔曲线
declare sub cairo_rel_curve_to(byval cr as cairo_t ptr, byval dx1 as double, byval dy1 as double, byval dx2 as double, byval dy2 as double, byval dx3 as double, byval dy3 as double)
相对三次贝塞尔曲线

圆弧路径

Declare Sub cairo_arc(ByVal cr As cairo_t Ptr, ByVal xc As Double, ByVal yc As Double, ByVal radius As Double, ByVal angle1 As Double, ByVal angle2 As Double)
圆弧(逆时针方向)
declare sub cairo_arc_negative(byval cr as cairo_t ptr, byval xc as double, byval yc as double, byval radius as double, byval angle1 as double, byval angle2 as double)
圆弧(顺时针方向)

矩形路径

declare sub cairo_rectangle(byval cr as cairo_t ptr, byval x as double, byval y as double, byval width as double, byval height as double)

路径信息获取

获取路径边界框
Declare Sub cairo_path_extents(ByVal cr As cairo_t Ptr, ByVal x1 As Double Ptr, ByVal y1 As Double Ptr, ByVal x2 As Double Ptr, ByVal y2 As Double Ptr)
declare sub cairo_stroke_extents(byval cr as cairo_t ptr, byval x1 as double ptr, byval y1 as double ptr, byval x2 as double ptr, byval y2 as double ptr)
declare sub cairo_fill_extents(byval cr as cairo_t ptr, byval x1 as double ptr, byval y1 as double ptr, byval x2 as double ptr, byval y2 as double ptr)

绘制操作

填充和描边

declare sub cairo_stroke(byval cr as cairo_t ptr)
描边并清除路径
declare sub cairo_stroke_preserve(byval cr as cairo_t ptr)
描边但保留路径
declare sub cairo_fill(byval cr as cairo_t ptr)
填充并清除路径
Declare Sub cairo_fill_preserve(ByVal cr As cairo_t Ptr)
填充但保留路径

区域填充

declare sub cairo_paint(byval cr as cairo_t ptr)
填充整个表面
declare sub cairo_paint_with_alpha(byval cr as cairo_t ptr, byval alpha as double)
带透明度填充

蒙版操作

Declare Sub cairo_mask(ByVal cr As cairo_t Ptr, ByVal PATTERN As cairo_pattern_t Ptr)
使用图案蒙版
Declare Sub cairo_mask_surface(ByVal cr As cairo_t Ptr, ByVal surface As cairo_surface_t Ptr, ByVal surface_x As Double, ByVal surface_y As Double)
使用表面蒙版

剪裁操作

剪裁设置

declare sub cairo_clip(byval cr as cairo_t ptr)
设置剪裁区域并清除路径
declare sub cairo_clip_preserve(byval cr as cairo_t ptr)
设置剪裁区域但保留路径
declare sub cairo_reset_clip(byval cr as cairo_t ptr)
重置剪裁区域

剪裁信息

declare sub cairo_clip_extents(byval cr as cairo_t ptr, byval x1 as double ptr, byval y1 as double ptr, byval x2 as double ptr, byval y2 as double ptr)
获取剪裁区域边界

获取剪裁矩形列表

Declare Function cairo_copy_clip_rectangle_list(ByVal cr As cairo_t Ptr) As cairo_rectangle_list_t Ptr
获取剪裁矩形列表
相关结构体定义

Type cairo_rectangle_t
    x As Double      ' 矩形左上角X坐标
    y As Double      ' 矩形左上角Y坐标
    width As Double  ' 矩形宽度
    height As Double ' 矩形高度
End Type

Type cairo_rectangle_list_t
    status As cairo_status_t      ' 操作状态
    rectangles As cairo_rectangle_t Ptr  ' 矩形数组指针
    num_rectangles As Long        ' 矩形数量
End Type

' 状态枚举
Enum cairo_status_t
    CAIRO_STATUS_SUCCESS = 0              ' 成功
    CAIRO_STATUS_NO_MEMORY = 1            ' 内存不足
    CAIRO_STATUS_INVALID_RESTORE = 2      ' 无效的恢复操作
    CAIRO_STATUS_INVALID_POP_GROUP = 3    ' 无效的弹出组操作
    CAIRO_STATUS_NO_CURRENT_POINT = 4     ' 没有当前点
    CAIRO_STATUS_INVALID_MATRIX = 5       ' 无效矩阵
    CAIRO_STATUS_INVALID_STATUS = 6       ' 无效状态
    CAIRO_STATUS_NULL_POINTER = 7         ' 空指针
    CAIRO_STATUS_INVALID_STRING = 8       ' 无效字符串
    CAIRO_STATUS_INVALID_PATH_DATA = 9    ' 无效路径数据
    CAIRO_STATUS_READ_ERROR = 10          ' 读取错误
    CAIRO_STATUS_WRITE_ERROR = 11         ' 写入错误
    CAIRO_STATUS_SURFACE_FINISHED = 12    ' 表面已结束
    CAIRO_STATUS_SURFACE_TYPE_MISMATCH = 13 ' 表面类型不匹配
    CAIRO_STATUS_PATTERN_TYPE_MISMATCH = 14 ' 图案类型不匹配
    CAIRO_STATUS_INVALID_CONTENT = 15     ' 无效内容
    CAIRO_STATUS_INVALID_FORMAT = 16      ' 无效格式
    CAIRO_STATUS_INVALID_VISUAL = 17      ' 无效可视化
    CAIRO_STATUS_FILE_NOT_FOUND = 18      ' 文件未找到
    CAIRO_STATUS_INVALID_DASH = 19        ' 无效虚线
    CAIRO_STATUS_INVALID_DSC_COMMENT = 20 ' 无效DSC注释
    CAIRO_STATUS_INVALID_INDEX = 21       ' 无效索引
    CAIRO_STATUS_CLIP_NOT_REPRESENTABLE = 22 ' 剪裁不可表示
    CAIRO_STATUS_TEMP_FILE_ERROR = 23     ' 临时文件错误
    CAIRO_STATUS_INVALID_STRIDE = 24      ' 无效步长
    CAIRO_STATUS_FONT_TYPE_MISMATCH = 25  ' 字体类型不匹配
    CAIRO_STATUS_USER_FONT_IMMUTABLE = 26 ' 用户字体不可变
    CAIRO_STATUS_USER_FONT_ERROR = 27     ' 用户字体错误
    CAIRO_STATUS_NEGATIVE_COUNT = 28      ' 负数计数
    CAIRO_STATUS_INVALID_CLUSTERS = 29    ' 无效簇
    CAIRO_STATUS_INVALID_SLANT = 30       ' 无效倾斜
    CAIRO_STATUS_INVALID_WEIGHT = 31      ' 无效权重
    CAIRO_STATUS_INVALID_SIZE = 32        ' 无效大小
    CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED = 33 ' 用户字体未实现
    CAIRO_STATUS_DEVICE_TYPE_MISMATCH = 34 ' 设备类型不匹配
    CAIRO_STATUS_DEVICE_ERROR = 35        ' 设备错误
    CAIRO_STATUS_INVALID_MESH_CONSTRUCTION = 36 ' 无效网格构造
    CAIRO_STATUS_DEVICE_FINISHED = 37     ' 设备已结束
    CAIRO_STATUS_LAST_STATUS = 38         ' 最后一个状态
End Enum

Declare Sub cairo_rectangle_list_destroy(ByVal rectangle_list As cairo_rectangle_list_t Ptr)
销毁剪裁矩形列表

点包含检测

declare function cairo_in_stroke(byval cr as cairo_t ptr, byval x as double, byval y as double) as cairo_bool_t
点是否在描边区域内
declare function cairo_in_fill(byval cr as cairo_t ptr, byval x as double, byval y as double) as cairo_bool_t
点是否在填充区域内
declare function cairo_in_clip(byval cr as cairo_t ptr, byval x as double, byval y as double) as cairo_bool_t
点是否在剪裁区域内

页面操作

declare sub cairo_copy_page(byval cr as cairo_t ptr)
复制当前页面(用于多页输出)
declare sub cairo_show_page(byval cr as cairo_t ptr)
显示页面并开始新页

分配字形数组

Declare Function cairo_glyph_allocate(ByVal num_glyphs As Long) As cairo_glyph_t Ptr
相关结构体定义

Type cairo_glyph_t
    index As Long     ' 字形在字体中的索引
    x As Double       ' 字形原点的X偏移
    y As Double       ' 字形原点的Y偏移
End Type

' 常量定义
Const CAIRO_GLYPH_NULL As cairo_glyph_t = Type(0, 0.0, 0.0)

Declare Sub cairo_glyph_free(ByVal glyphs As cairo_glyph_t Ptr)
释放字形数组

分配文本簇数组

Declare Function cairo_text_cluster_allocate(ByVal num_clusters As Long) As cairo_text_cluster_t Ptr
' 相关结构体定义

Type cairo_text_cluster_t
    num_bytes As Long     ' 簇中的字节数
    num_glyphs As Long    ' 簇中的字形数
End Type

' 文本簇标志
Enum cairo_text_cluster_flags_t
    CAIRO_TEXT_CLUSTER_FLAG_BACKWARD = &H00000001  ' 从右到左文本
End Enum

Declare Sub cairo_text_cluster_free(ByVal clusters As cairo_text_cluster_t Ptr)
释放文本簇数组

字体和文本渲染

字体选项

创建和管理

Declare Function cairo_font_options_create() As cairo_font_options_t Ptr
创建字体选项
Declare Function cairo_font_options_copy(ByVal original As Const cairo_font_options_t Ptr) As cairo_font_options_t Ptr
复制字体选项
declare sub cairo_font_options_merge(byval options as cairo_font_options_t ptr, byval other as const cairo_font_options_t ptr)
合并选项
declare function cairo_font_options_status(byval options as cairo_font_options_t ptr) as cairo_status_t
检查字体选项对象状态
declare function cairo_font_options_equal(byval options as const cairo_font_options_t ptr, byval other as const cairo_font_options_t ptr) as cairo_bool_t
比较
declare function cairo_font_options_hash(byval options as const cairo_font_options_t ptr) as culong
哈希
declare sub cairo_font_options_destroy(byval options as cairo_font_options_t ptr)
销毁选项

抗锯齿设置

Declare Sub cairo_font_options_set_antialias(ByVal Options As cairo_font_options_t Ptr, ByVal antialias As cairo_antialias_t)

Enum cairo_antialias_t
    CAIRO_ANTIALIAS_DEFAULT     = 0
    CAIRO_ANTIALIAS_NONE        = 1
    CAIRO_ANTIALIAS_GRAY        = 2
    CAIRO_ANTIALIAS_SUBPIXEL    = 3
    CAIRO_ANTIALIAS_FAST        = 4
    CAIRO_ANTIALIAS_GOOD        = 5
    CAIRO_ANTIALIAS_BEST        = 6
End Enum

declare function cairo_font_options_get_antialias(byval options as const cairo_font_options_t ptr) as cairo_antialias_t
获取

子像素顺序

Declare Sub cairo_font_options_set_subpixel_order(ByVal Options As cairo_font_options_t Ptr, ByVal subpixel_order As cairo_subpixel_order_t)

Enum cairo_subpixel_order_t
    CAIRO_SUBPIXEL_ORDER_DEFAULT    = 0
    CAIRO_SUBPIXEL_ORDER_RGB        = 1
    CAIRO_SUBPIXEL_ORDER_BGR        = 2
    CAIRO_SUBPIXEL_ORDER_VRGB       = 3
    CAIRO_SUBPIXEL_ORDER_VBGR       = 4
End Enum

Declare Function cairo_font_options_get_subpixel_order(ByVal Options As Const cairo_font_options_t Ptr) As cairo_subpixel_order_t

提示设置

declare sub cairo_font_options_set_hint_style(byval options as cairo_font_options_t ptr, byval hint_style as cairo_hint_style_t)
declare function cairo_font_options_get_hint_style(byval options as const cairo_font_options_t ptr) as cairo_hint_style_t
Declare Sub cairo_font_options_set_hint_metrics(ByVal Options As cairo_font_options_t Ptr, ByVal hint_metrics As cairo_hint_metrics_t)
Declare Function cairo_font_options_get_hint_metrics(ByVal Options As Const cairo_font_options_t Ptr) As cairo_hint_metrics_t

基本字体操作

设置字体

declare sub cairo_select_font_face(byval cr as cairo_t ptr, byval family as const zstring ptr, byval slant as cairo_font_slant_t, byval weight as cairo_font_weight_t)
' 设置字体族、样式和粗细

Enum cairo_font_slant_t
    CAIRO_FONT_SLANT_NORMAL     = 0
    CAIRO_FONT_SLANT_ITALIC     = 1
    CAIRO_FONT_SLANT_OBLIQUE    = 2
End Enum

Enum cairo_font_weight_t
    CAIRO_FONT_WEIGHT_NORMAL    = 0
    CAIRO_FONT_WEIGHT_BOLD      = 1
End Enum

Declare Sub cairo_set_font_size(ByVal cr As cairo_t Ptr, ByVal SIZE As Double)

字体矩阵

declare sub cairo_matrix_init_scale(byval matrix as cairo_matrix_t ptr, byval sx as double, byval sy as double)
创建缩放矩阵
Declare Sub cairo_set_font_matrix(ByVal cr As cairo_t Ptr, ByVal matrix As Const cairo_matrix_t Ptr)
设置
Declare Sub cairo_get_font_matrix(ByVal cr As cairo_t Ptr, ByVal matrix As cairo_matrix_t Ptr)
获取

字体选项管理

declare sub cairo_set_font_options(byval cr as cairo_t ptr, byval options as const cairo_font_options_t ptr)
declare sub cairo_get_font_options(byval cr as cairo_t ptr, byval options as cairo_font_options_t ptr)

字体面和缩放字体

字体面操作

declare sub cairo_set_font_face(byval cr as cairo_t ptr, byval font_face as cairo_font_face_t ptr)
declare function cairo_get_font_face(byval cr as cairo_t ptr) as cairo_font_face_t ptr
declare function cairo_font_face_reference(byval font_face as cairo_font_face_t ptr) as cairo_font_face_t ptr
declare sub cairo_font_face_destroy(byval font_face as cairo_font_face_t ptr)
declare function cairo_font_face_get_reference_count(byval font_face as cairo_font_face_t ptr) as ulong
Declare Function cairo_font_face_status(ByVal font_face As cairo_font_face_t Ptr) As cairo_status_t

缩放字体

Declare Sub cairo_set_scaled_font(ByVal cr As cairo_t Ptr, ByVal scaled_font As Const cairo_scaled_font_t Ptr)
Declare Function cairo_get_scaled_font(ByVal cr As cairo_t Ptr) As cairo_scaled_font_t Ptr

文本绘制和测量

绘制文本

Declare Sub cairo_show_text(ByVal cr As cairo_t Ptr, ByVal utf8 As Const ZString Ptr)
简单文本绘制
declare sub cairo_show_glyphs(byval cr as cairo_t ptr, byval glyphs as const cairo_glyph_t ptr, byval num_glyphs as long)
字形绘制
declare sub cairo_show_text_glyphs(byval cr as cairo_t ptr, byval utf8 as const zstring ptr, byval utf8_len as long, byval glyphs as const cairo_glyph_t ptr, byval num_glyphs as long, byval clusters as const cairo_text_cluster_t ptr, byval num_clusters as long, byval cluster_flags as cairo_text_cluster_flags_t)
带簇信息的文本绘制

文本路径

Declare Sub cairo_text_path(ByVal cr As cairo_t Ptr, ByVal utf8 As Const ZString Ptr)
将文本添加到路径中
Declare Sub cairo_glyph_path(ByVal cr As cairo_t Ptr, ByVal glyphs As Const cairo_glyph_t Ptr, ByVal num_glyphs As Long)
将字形添加到路径中

文本测量

Type cairo_text_extents_t
    x_bearing As Double   ' 从原点到最左点的水平距离
    y_bearing As Double   ' 从原点到最上点的垂直距离
    width As Double       ' 文本宽度
    height As Double      ' 文本高度
    x_advance As Double   ' 原点到下一个文本原点的距离
    y_advance As Double   ' 原点到下一行文本原点的距离
End Type

Type cairo_font_extents_t
    ascent As Double      ' 从基线到最高点的距离
    descent As Double     ' 从基线到最低点的距离
    height As Double      ' 推荐的行高
    max_x_advance As Double  ' 最大前进宽度
    max_y_advance As Double  ' 最大前进高度
End Type

Declare Sub cairo_text_extents(ByVal cr As cairo_t Ptr, ByVal utf8 As Const ZString Ptr, ByVal extents As cairo_text_extents_t Ptr)
测量文字
Declare Sub cairo_font_extents(ByVal cr As cairo_t Ptr, ByVal extents As cairo_font_extents_t Ptr)
测量字体
Declare Sub cairo_scaled_font_text_extents(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal utf8 As Const ZString Ptr, ByVal extents As cairo_text_extents_t Ptr)
缩放字体测量
Declare Sub cairo_glyph_extents(ByVal cr As cairo_t Ptr, ByVal glyphs As Const cairo_glyph_t Ptr, ByVal num_glyphs As Long, ByVal extents As cairo_text_extents_t Ptr)
字形测量

玩具字体

创建和使用玩具字体

declare function cairo_toy_font_face_create(byval family as const zstring ptr, byval slant as cairo_font_slant_t, byval weight as cairo_font_weight_t) as cairo_font_face_t ptr
declare function cairo_toy_font_face_get_family(byval font_face as cairo_font_face_t ptr) as const zstring ptr
Declare Function cairo_toy_font_face_get_slant(ByVal font_face As cairo_font_face_t Ptr) As cairo_font_slant_t
declare function cairo_toy_font_face_get_weight(byval font_face as cairo_font_face_t ptr) as cairo_font_weight_t

用户自定义字体

创建用户字体面

declare function cairo_user_font_face_create() as cairo_font_face_t ptr
创建

Type cairo_user_scaled_font_init_func_t As Function(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal cr As cairo_t Ptr, ByVal extents As cairo_font_extents_t Ptr) As cairo_status_t
Type cairo_user_scaled_font_render_glyph_func_t As Function(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal glyph As culong, ByVal cr As cairo_t Ptr, ByVal extents As cairo_text_extents_t Ptr) As cairo_status_t
Type cairo_user_scaled_font_text_to_glyphs_func_t As Function(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal utf8 As Const ZString Ptr, ByVal utf8_len As Long, ByVal glyphs As cairo_glyph_t Ptr Ptr, ByVal num_glyphs As Long Ptr, ByVal clusters As cairo_text_cluster_t Ptr Ptr, ByVal num_clusters As Long Ptr, ByVal cluster_flags As cairo_text_cluster_flags_t Ptr) As cairo_status_t
Type cairo_user_scaled_font_unicode_to_glyph_func_t As Function(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal unicode As culong, ByVal glyph_index As culong Ptr) As cairo_status_t

Declare Sub cairo_user_font_face_set_init_func(ByVal font_face As cairo_font_face_t Ptr, ByVal init_func As cairo_user_scaled_font_init_func_t)
declare sub cairo_user_font_face_set_render_glyph_func(byval font_face as cairo_font_face_t ptr, byval render_glyph_func as cairo_user_scaled_font_render_glyph_func_t)
Declare Sub cairo_user_font_face_set_text_to_glyphs_func(ByVal font_face As cairo_font_face_t Ptr, ByVal text_to_glyphs_func As cairo_user_scaled_font_text_to_glyphs_func_t)
declare sub cairo_user_font_face_set_unicode_to_glyph_func(byval font_face as cairo_font_face_t ptr, byval unicode_to_glyph_func as cairo_user_scaled_font_unicode_to_glyph_func_t)
declare function cairo_user_font_face_get_init_func(byval font_face as cairo_font_face_t ptr) as cairo_user_scaled_font_init_func_t
declare function cairo_user_font_face_get_render_glyph_func(byval font_face as cairo_font_face_t ptr) as cairo_user_scaled_font_render_glyph_func_t
Declare Function cairo_user_font_face_get_text_to_glyphs_func(ByVal font_face As cairo_font_face_t Ptr) As cairo_user_scaled_font_text_to_glyphs_func_t
Declare Function cairo_user_font_face_get_unicode_to_glyph_func(ByVal font_face As cairo_font_face_t Ptr) As cairo_user_scaled_font_unicode_to_glyph_func_t

其它字体相关

declare function cairo_font_face_get_type(byval font_face as cairo_font_face_t ptr) as cairo_font_type_t
Declare Function cairo_font_face_get_user_data(ByVal font_face As cairo_font_face_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr) As Any Ptr
Declare Function cairo_font_face_set_user_data(ByVal font_face As cairo_font_face_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr, ByVal user_data As Any Ptr, ByVal destroy As cairo_destroy_func_t) As cairo_status_t
Declare Function cairo_scaled_font_create(ByVal font_face As cairo_font_face_t Ptr, ByVal font_matrix As Const cairo_matrix_t Ptr, ByVal ctm As Const cairo_matrix_t Ptr, ByVal options As Const cairo_font_options_t Ptr) As cairo_scaled_font_t Ptr
Declare Function cairo_scaled_font_reference(ByVal scaled_font As cairo_scaled_font_t Ptr) As cairo_scaled_font_t Ptr
Declare Sub cairo_scaled_font_destroy(ByVal scaled_font As cairo_scaled_font_t Ptr)
declare function cairo_scaled_font_get_reference_count(byval scaled_font as cairo_scaled_font_t ptr) as ulong
Declare Function cairo_scaled_font_status(ByVal scaled_font As cairo_scaled_font_t Ptr) As cairo_status_t
declare function cairo_scaled_font_get_type(byval scaled_font as cairo_scaled_font_t ptr) as cairo_font_type_t
declare function cairo_scaled_font_get_user_data(byval scaled_font as cairo_scaled_font_t ptr, byval key as const cairo_user_data_key_t ptr) as any ptr
Declare Function cairo_scaled_font_set_user_data(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr, ByVal user_data As Any Ptr, ByVal destroy As cairo_destroy_func_t) As cairo_status_t
declare sub cairo_scaled_font_extents(byval scaled_font as cairo_scaled_font_t ptr, byval extents as cairo_font_extents_t ptr)

Declare Sub cairo_scaled_font_glyph_extents(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal glyphs As Const cairo_glyph_t Ptr, ByVal num_glyphs As Long, ByVal extents As cairo_text_extents_t Ptr)
declare function cairo_scaled_font_text_to_glyphs(byval scaled_font as cairo_scaled_font_t ptr, byval x as double, byval y as double, byval utf8 as const zstring ptr, byval utf8_len as long, byval glyphs as cairo_glyph_t ptr ptr, byval num_glyphs as long ptr, byval clusters as cairo_text_cluster_t ptr ptr, byval num_clusters as long ptr, byval cluster_flags as cairo_text_cluster_flags_t ptr) as cairo_status_t
declare function cairo_scaled_font_get_font_face(byval scaled_font as cairo_scaled_font_t ptr) as cairo_font_face_t ptr
Declare Sub cairo_scaled_font_get_font_matrix(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal font_matrix As cairo_matrix_t Ptr)
Declare Sub cairo_scaled_font_get_ctm(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal ctm As cairo_matrix_t Ptr)
Declare Sub cairo_scaled_font_get_scale_matrix(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal scale_matrix As cairo_matrix_t Ptr)
Declare Sub cairo_scaled_font_get_font_options(ByVal scaled_font As cairo_scaled_font_t Ptr, ByVal Options As cairo_font_options_t Ptr)

上下文状态查询

核心状态查询

Declare Function cairo_get_operator(ByVal cr As cairo_t Ptr) As cairo_operator_t
获取当前混合操作符(如覆盖、相加、相乘等)
Declare Function cairo_get_source(ByVal cr As cairo_t Ptr) As cairo_pattern_t Ptr
获取当前绘图源(颜色/渐变/图案)
declare function cairo_get_target(byval cr as cairo_t ptr) as cairo_surface_t ptr
获取目标绘制表面
declare function cairo_get_group_target(byval cr as cairo_t ptr) as cairo_surface_t ptr
获取组目标表面(用于push/pop_group)
declare function cairo_get_tolerance(byval cr as cairo_t ptr) as double
获取曲线近似容差(精度控制)
declare function cairo_get_antialias(byval cr as cairo_t ptr) as cairo_antialias_t
获取抗锯齿模式(无/灰度/子像素等)

路径相关

declare function cairo_has_current_point(byval cr as cairo_t ptr) as cairo_bool_t
检查路径是否有当前点
declare sub cairo_get_current_point(byval cr as cairo_t ptr, byval x as double ptr, byval y as double ptr)
获取当前点坐标
declare function cairo_get_fill_rule(byval cr as cairo_t ptr) as cairo_fill_rule_t
获取填充规则(缠绕/奇偶)

线条样式

declare function cairo_get_line_width(byval cr as cairo_t ptr) as double
获取线宽
declare function cairo_get_line_cap(byval cr as cairo_t ptr) as cairo_line_cap_t
获取线帽样式(平头/圆头/方头)
declare function cairo_get_line_join(byval cr as cairo_t ptr) as cairo_line_join_t
获取连接样式(尖角/圆角/斜角)
declare function cairo_get_miter_limit(byval cr as cairo_t ptr) as double
获取尖角限制值

虚线模式

declare function cairo_get_dash_count(byval cr as cairo_t ptr) as long
获取虚线段数
declare sub cairo_get_dash(byval cr as cairo_t ptr, byval dashes as double ptr, byval offset as double ptr)
获取虚线模式和偏移

变换矩阵

Declare Sub cairo_get_matrix(ByVal cr As cairo_t Ptr, ByVal matrix As cairo_matrix_t Ptr)
获取当前变换矩阵

路径操作

declare function cairo_copy_path(byval cr as cairo_t ptr) as cairo_path_t ptr
复制当前路径
Declare Function cairo_copy_path_flat(ByVal cr As cairo_t Ptr) As cairo_path_t Ptr
复制扁平化路径
declare sub cairo_append_path(byval cr as cairo_t ptr, byval path as const cairo_path_t ptr)
追加路径
declare sub cairo_path_destroy(byval path as cairo_path_t ptr)
销毁路径

状态管理

declare function cairo_status(byval cr as cairo_t ptr) as cairo_status_t
获取上下文状态
declare function cairo_status_to_string(byval status as cairo_status_t) as const zstring ptr
状态码转字符串
declare function cairo_device_reference(byval device as cairo_device_t ptr) as cairo_device_t ptr
设备引用计数增加

设备管理

declare function cairo_device_get_type(byval device as cairo_device_t ptr) as cairo_device_type_t
获取设备类型(如GL、DRM等)
declare function cairo_device_status(byval device as cairo_device_t ptr) as cairo_status_t
检查设备状态(是否有错误)
declare function cairo_device_acquire(byval device as cairo_device_t ptr) as cairo_status_t
线程安全操作,锁定设备(多线程安全)
declare sub cairo_device_release(byval device as cairo_device_t ptr)
线程安全操作,释放设备锁
declare sub cairo_device_flush(byval device as cairo_device_t ptr)
生命周期管理:刷新设备缓冲区
declare sub cairo_device_finish(byval device as cairo_device_t ptr)
生命周期管理:完成设备操作
declare sub cairo_device_destroy(byval device as cairo_device_t ptr)
生命周期管理:销毁设备(减少引用计数)
declare function cairo_device_get_reference_count(byval device as cairo_device_t ptr) as ulong
引用和用户数据:获取引用计数
declare function cairo_device_get_user_data(byval device as cairo_device_t ptr, byval key as const cairo_user_data_key_t ptr) as any ptr
引用和用户数据:用户数据管理
declare function cairo_device_set_user_data(byval device as cairo_device_t ptr, byval key as const cairo_user_data_key_t ptr, byval user_data as any ptr, byval destroy as cairo_destroy_func_t) as cairo_status_t
引用和用户数据:用户数据管理

表面创建

declare function cairo_surface_create_similar(byval other as cairo_surface_t ptr, byval content as cairo_content_t, byval width as long, byval height as long) as cairo_surface_t ptr
创建类似表面,基于现有表面创建新表面(相同类型和内容)
Declare Function cairo_surface_create_similar_image(ByVal other As cairo_surface_t Ptr, ByVal Format As cairo_format_t, ByVal Width As Long, ByVal height As Long) As cairo_surface_t Ptr
创建类似图像表面,创建指定格式的图像表面
Declare Function cairo_surface_map_to_image(ByVal surface As cairo_surface_t Ptr, ByVal extents As Const cairo_rectangle_int_t Ptr) As cairo_surface_t Ptr
表面映射到图像,获取表面的图像表示(用于像素操作)
Declare Sub cairo_surface_unmap_image(ByVal surface As cairo_surface_t Ptr, ByVal image As cairo_surface_t Ptr)
取消图像映射,完成图像操作并同步回表面
Declare Function cairo_surface_create_for_rectangle(ByVal target As cairo_surface_t Ptr, ByVal x As Double, ByVal y As Double, ByVal Width As Double, ByVal height As Double) As cairo_surface_t Ptr
创建矩形区域表面,创建目标表面子区域的视图表面

观察者表面(性能监控)

declare function cairo_surface_create_observer(byval target as cairo_surface_t ptr, byval mode as cairo_surface_observer_mode_t) as cairo_surface_t ptr
创建观察者表面
Type cairo_surface_observer_callback_t As Sub(ByVal observer As cairo_surface_t Ptr, ByVal target As cairo_surface_t Ptr, ByVal Data As Any Ptr)
观察回调函数 - 监控特定操作
Declare Function cairo_surface_observer_add_paint_callback(ByVal abstract_surface As cairo_surface_t Ptr, ByVal func As cairo_surface_observer_callback_t, ByVal Data As Any Ptr) As cairo_status_t
绘制操作
declare function cairo_surface_observer_add_mask_callback(byval abstract_surface as cairo_surface_t ptr, byval func as cairo_surface_observer_callback_t, byval data as any ptr) as cairo_status_t
蒙版操作
declare function cairo_surface_observer_add_fill_callback(byval abstract_surface as cairo_surface_t ptr, byval func as cairo_surface_observer_callback_t, byval data as any ptr) as cairo_status_t
填充操作
Declare Function cairo_surface_observer_add_stroke_callback(ByVal abstract_surface As cairo_surface_t Ptr, ByVal func As cairo_surface_observer_callback_t, ByVal Data As Any Ptr) As cairo_status_t
描边操作
declare function cairo_surface_observer_add_glyphs_callback(byval abstract_surface as cairo_surface_t ptr, byval func as cairo_surface_observer_callback_t, byval data as any ptr) as cairo_status_t
文本操作
declare function cairo_surface_observer_add_flush_callback(byval abstract_surface as cairo_surface_t ptr, byval func as cairo_surface_observer_callback_t, byval data as any ptr) as cairo_status_t
刷新操作
declare function cairo_surface_observer_add_finish_callback(byval abstract_surface as cairo_surface_t ptr, byval func as cairo_surface_observer_callback_t, byval data as any ptr) as cairo_status_t
完成操作
declare function cairo_surface_observer_elapsed(byval surface as cairo_surface_t ptr) as double
性能分析:获取总耗时
declare function cairo_device_observer_elapsed(byval device as cairo_device_t ptr) as double
性能分析:设备总耗时

Declare Function cairo_surface_observer_print(ByVal surface As cairo_surface_t Ptr, ByVal write_func As cairo_write_func_t, ByVal closure As Any Ptr) As cairo_status_t
调试输出:打印表面操作统计
Declare Function cairo_device_observer_print(ByVal device As cairo_device_t Ptr, ByVal write_func As cairo_write_func_t, ByVal closure As Any Ptr) As cairo_status_t
调试输出:打印设备操作统计

表面管理

declare function cairo_surface_reference(byval surface as cairo_surface_t ptr) as cairo_surface_t ptr
生命周期管理:增加引用计数
declare sub cairo_surface_finish(byval surface as cairo_surface_t ptr)
生命周期管理:完成表面操作
declare sub cairo_surface_destroy(byval surface as cairo_surface_t ptr)
生命周期管理:销毁表面
declare function cairo_surface_get_device(byval surface as cairo_surface_t ptr) as cairo_device_t ptr
获取关联设备
declare function cairo_surface_get_reference_count(byval surface as cairo_surface_t ptr) as ulong
获取引用计数
declare function cairo_surface_status(byval surface as cairo_surface_t ptr) as cairo_status_t
检查表面状态
declare function cairo_device_observer_paint_elapsed(byval device as cairo_device_t ptr) as double
绘制操作总耗时
declare function cairo_device_observer_mask_elapsed(byval device as cairo_device_t ptr) as double
蒙版操作总耗时
declare function cairo_device_observer_fill_elapsed(byval device as cairo_device_t ptr) as double
填充操作总耗时
declare function cairo_device_observer_stroke_elapsed(byval device as cairo_device_t ptr) as double
描边操作总耗时
declare function cairo_device_observer_glyphs_elapsed(byval device as cairo_device_t ptr) as double
文本操作总耗时

表面信息查询

declare function cairo_surface_get_type(byval surface as cairo_surface_t ptr) as cairo_surface_type_t
获取表面类型,返回:图像、PDF、SVG、Windows、Quartz等类型枚举
declare function cairo_surface_get_content(byval surface as cairo_surface_t ptr) as cairo_content_t
获取表面内容类型,返回:颜色、透明度、颜色+透明度等格式枚举

PNG 输出函数

Declare Function cairo_surface_write_to_png(ByVal surface As cairo_surface_t Ptr, ByVal filename As Const ZString Ptr) As cairo_status_t
保存为PNG文件,将表面内容写入到PNG格式文件
Declare Function cairo_surface_write_to_png_stream(ByVal surface As cairo_surface_t Ptr, ByVal write_func As cairo_write_func_t, ByVal closure As Any Ptr) As cairo_status_t
流式保存PNG,通过回调函数流式写入PNG数据(用于网络或内存输出)

用户数据管理

declare function cairo_surface_get_user_data(byval surface as cairo_surface_t ptr, byval key as const cairo_user_data_key_t ptr) as any ptr
获取用户数据,通过键值获取关联的自定义数据
Declare Function cairo_surface_set_user_data(ByVal surface As cairo_surface_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr, ByVal user_data As Any Ptr, ByVal destroy As cairo_destroy_func_t) As cairo_status_t
设置用户数据,关联自定义数据到表面,可设置销毁回调

MIME 数据管理

declare sub cairo_surface_get_mime_data(byval surface as cairo_surface_t ptr, byval mime_type as const zstring ptr, byval data as const ubyte ptr ptr, byval length as culong ptr)
获取MIME类型数据(如JPEG预览)
Declare Function cairo_surface_set_mime_data(ByVal surface As cairo_surface_t Ptr, ByVal mime_type As Const ZString Ptr, ByVal Data As Const UByte Ptr, ByVal length As culong, ByVal destroy As cairo_destroy_func_t, ByVal closure As Any Ptr) As cairo_status_t
设置MIME类型数据
declare function cairo_surface_supports_mime_type(byval surface as cairo_surface_t ptr, byval mime_type as const zstring ptr) as cairo_bool_t
检查是否支持某MIME类型

字体和刷新

Declare Sub cairo_surface_get_font_options(ByVal surface As cairo_surface_t Ptr, ByVal options As cairo_font_options_t Ptr)
获取表面字体选项
declare sub cairo_surface_flush(byval surface as cairo_surface_t ptr)
强制刷新表面缓存
declare sub cairo_surface_mark_dirty(byval surface as cairo_surface_t ptr)
标记整个表面为脏(需重绘)
declare sub cairo_surface_mark_dirty_rectangle(byval surface as cairo_surface_t ptr, byval x as long, byval y as long, byval width as long, byval height as long)
标记矩形区域为脏

设备变换

declare sub cairo_surface_set_device_scale(byval surface as cairo_surface_t ptr, byval x_scale as double, byval y_scale as double)
declare sub cairo_surface_get_device_scale(byval surface as cairo_surface_t ptr, byval x_scale as double ptr, byval y_scale as double ptr)
设备缩放因子(HiDPI支持)
declare sub cairo_surface_set_device_offset(byval surface as cairo_surface_t ptr, byval x_offset as double, byval y_offset as double)
Declare Sub cairo_surface_get_device_offset(ByVal surface As cairo_surface_t Ptr, ByVal x_offset As Double Ptr, ByVal y_offset As Double Ptr)
设备偏移量
declare sub cairo_surface_set_fallback_resolution(byval surface as cairo_surface_t ptr, byval x_pixels_per_inch as double, byval y_pixels_per_inch as double)
declare sub cairo_surface_get_fallback_resolution(byval surface as cairo_surface_t ptr, byval x_pixels_per_inch as double ptr, byval y_pixels_per_inch as double ptr)
后备分辨率

页面操作

declare sub cairo_surface_copy_page(byval surface as cairo_surface_t ptr)
复制当前页(多页输出)
declare sub cairo_surface_show_page(byval surface as cairo_surface_t ptr)
显示页面(开始新页)
declare function cairo_surface_has_show_text_glyphs(byval surface as cairo_surface_t ptr) as cairo_bool_t
检查是否支持高级文本渲染

图像表面创建

Declare Function cairo_image_surface_create(ByVal Format As cairo_format_t, ByVal Width As Long, ByVal height As Long) As cairo_surface_t Ptr
创建新图像表面
declare function cairo_format_stride_for_width(byval format as cairo_format_t, byval width as long) as long
计算行字节数
Declare Function cairo_image_surface_create_for_data(ByVal Data As UByte Ptr, ByVal Format As cairo_format_t, ByVal Width As Long, ByVal height As Long, ByVal stride As Long) As cairo_surface_t Ptr
从现有数据创建图像表面

图像表面信息

Declare Function cairo_image_surface_get_data(ByVal surface As cairo_surface_t Ptr) As UByte Ptr
获取像素数据指针
Declare Function cairo_image_surface_get_format(ByVal surface As cairo_surface_t Ptr) As cairo_format_t
获取像素格式
Declare Function cairo_image_surface_get_width(ByVal surface As cairo_surface_t Ptr) As Long
Declare Function cairo_image_surface_get_height(ByVal surface As cairo_surface_t Ptr) As Long
获取尺寸
Declare Function cairo_image_surface_get_stride(ByVal surface As cairo_surface_t Ptr) As Long
获取行字节数

PNG 图像加载

Declare Function cairo_image_surface_create_from_png(ByVal filename As Const ZString Ptr) As cairo_surface_t Ptr
从PNG文件创建
declare function cairo_image_surface_create_from_png_stream(byval read_func as cairo_read_func_t, byval closure as any ptr) as cairo_surface_t ptr
从流加载PNG

录制表面

declare function cairo_recording_surface_create(byval content as cairo_content_t, byval extents as const cairo_rectangle_t ptr) as cairo_surface_t ptr
创建录制表面(记录绘制操作)
declare sub cairo_recording_surface_ink_extents(byval surface as cairo_surface_t ptr, byval x0 as double ptr, byval y0 as double ptr, byval width as double ptr, byval height as double ptr)
获取绘制内容的实际范围
Declare Function cairo_recording_surface_get_extents(ByVal surface As cairo_surface_t Ptr, ByVal extents As cairo_rectangle_t Ptr) As cairo_bool_t
获取录制区域边界

图案(Pattern)

光栅源图案(动态生成图案)

declare function cairo_pattern_create_raster_source(byval user_data as any ptr, byval content as cairo_content_t, byval width as long, byval height as long) as cairo_pattern_t ptr
创建光栅源图案,允许动态生成像素数据,设置获取、释放、快照等回调函数
declare sub cairo_raster_source_pattern_set_callback_data(byval pattern as cairo_pattern_t ptr, byval data as any ptr)
declare function cairo_raster_source_pattern_get_callback_data(byval pattern as cairo_pattern_t ptr) as any ptr
光栅源回调函数管理:回调用户数据
declare sub cairo_raster_source_pattern_set_acquire(byval pattern as cairo_pattern_t ptr, byval acquire as cairo_raster_source_acquire_func_t, byval release as cairo_raster_source_release_func_t)
declare sub cairo_raster_source_pattern_get_acquire(byval pattern as cairo_pattern_t ptr, byval acquire as cairo_raster_source_acquire_func_t ptr, byval release as cairo_raster_source_release_func_t ptr)
光栅源回调函数管理:获取/释放图像数据
declare sub cairo_raster_source_pattern_set_snapshot(byval pattern as cairo_pattern_t ptr, byval snapshot as cairo_raster_source_snapshot_func_t)
declare function cairo_raster_source_pattern_get_snapshot(byval pattern as cairo_pattern_t ptr) as cairo_raster_source_snapshot_func_t
光栅源回调函数管理:创建数据快照
declare sub cairo_raster_source_pattern_set_copy(byval pattern as cairo_pattern_t ptr, byval copy as cairo_raster_source_copy_func_t)
declare function cairo_raster_source_pattern_get_copy(byval pattern as cairo_pattern_t ptr) as cairo_raster_source_copy_func_t
光栅源回调函数管理:图案复制回调
declare sub cairo_raster_source_pattern_set_finish(byval pattern as cairo_pattern_t ptr, byval finish as cairo_raster_source_finish_func_t)
declare function cairo_raster_source_pattern_get_finish(byval pattern as cairo_pattern_t ptr) as cairo_raster_source_finish_func_t
光栅源回调函数管理:完成清理回调

基本图案创建

declare function cairo_pattern_create_rgb(byval red as double, byval green as double, byval blue as double) as cairo_pattern_t ptr
创建RGB颜色
declare function cairo_pattern_create_rgba(byval red as double, byval green as double, byval blue as double, byval alpha as double) as cairo_pattern_t ptr
创建RGBA颜色(带透明度)
declare function cairo_pattern_create_for_surface(byval surface as cairo_surface_t ptr) as cairo_pattern_t ptr
从表面创建图案
declare function cairo_pattern_create_linear(byval x0 as double, byval y0 as double, byval x1 as double, byval y1 as double) as cairo_pattern_t ptr
创建线性渐变
declare function cairo_pattern_create_radial(byval cx0 as double, byval cy0 as double, byval radius0 as double, byval cx1 as double, byval cy1 as double, byval radius1 as double) as cairo_pattern_t ptr
创建径向渐变
declare function cairo_pattern_create_mesh() as cairo_pattern_t ptr
创建网格渐变(最灵活的渐变)

图案管理

declare function cairo_pattern_reference(byval pattern as cairo_pattern_t ptr) as cairo_pattern_t ptr
生命周期管理:增加引用计数
declare sub cairo_pattern_destroy(byval pattern as cairo_pattern_t ptr)
生命周期管理:减少引用计数
declare function cairo_pattern_get_reference_count(byval pattern as cairo_pattern_t ptr) as ulong
生命周期管理:获取引用计数
Declare Function cairo_pattern_status(ByVal PATTERN As cairo_pattern_t Ptr) As cairo_status_t
状态和用户数据:检查图案状态
Declare Function cairo_pattern_get_user_data(ByVal PATTERN As cairo_pattern_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr) As Any Ptr
Declare Function cairo_pattern_set_user_data(ByVal PATTERN As cairo_pattern_t Ptr, ByVal key As Const cairo_user_data_key_t Ptr, ByVal user_data As Any Ptr, ByVal destroy As cairo_destroy_func_t) As cairo_status_t
状态和用户数据:用户数据管理
declare function cairo_pattern_get_type(byval pattern as cairo_pattern_t ptr) as cairo_pattern_type_t
获取图案类型,返回:实体、表面、线性渐变、径向渐变、网格等类型
Declare Sub cairo_pattern_add_color_stop_rgb(ByVal PATTERN As cairo_pattern_t Ptr, ByVal offset As Double, ByVal red As Double, ByVal green As Double, ByVal blue As Double)
添加RGB颜色停止点
declare sub cairo_pattern_add_color_stop_rgba(byval pattern as cairo_pattern_t ptr, byval offset as double, byval red as double, byval green as double, byval blue as double, byval alpha as double)
添加RGBA颜色停止点(带透明度)

网格图案操作(高级渐变)

declare sub cairo_mesh_pattern_begin_patch(byval pattern as cairo_pattern_t ptr)
开始新补丁
declare sub cairo_mesh_pattern_end_patch(byval pattern as cairo_pattern_t ptr)
结束当前补丁
declare sub cairo_mesh_pattern_curve_to(byval pattern as cairo_pattern_t ptr, byval x1 as double, byval y1 as double, byval x2 as double, byval y2 as double, byval x3 as double, byval y3 as double)
移动到起始点
declare sub cairo_mesh_pattern_line_to(byval pattern as cairo_pattern_t ptr, byval x as double, byval y as double)
添加直线段
declare sub cairo_mesh_pattern_move_to(byval pattern as cairo_pattern_t ptr, byval x as double, byval y as double)
添加贝塞尔曲线
declare sub cairo_mesh_pattern_set_control_point(byval pattern as cairo_pattern_t ptr, byval point_num as ulong, byval x as double, byval y as double)
设置控制点
declare sub cairo_mesh_pattern_set_corner_color_rgb(byval pattern as cairo_pattern_t ptr, byval corner_num as ulong, byval red as double, byval green as double, byval blue as double)
设置角点RGB颜色
declare sub cairo_mesh_pattern_set_corner_color_rgba(byval pattern as cairo_pattern_t ptr, byval corner_num as ulong, byval red as double, byval green as double, byval blue as double, byval alpha as double)
设置角点RGBA颜色(带透明度)
Declare Sub cairo_pattern_set_matrix(ByVal PATTERN As cairo_pattern_t Ptr, ByVal matrix As Const cairo_matrix_t Ptr)
设置图案变换矩阵
Declare Sub cairo_pattern_get_matrix(ByVal PATTERN As cairo_pattern_t Ptr, ByVal matrix As cairo_matrix_t Ptr)
获取当前变换矩阵

图案延伸模式

Declare Sub cairo_pattern_set_extend(ByVal PATTERN As cairo_pattern_t Ptr, ByVal extend As cairo_extend_t)
设置图案延伸模式,控制当图案小于填充区域时的重复方式
Declare Function cairo_pattern_get_extend(ByVal PATTERN As cairo_pattern_t Ptr) As cairo_extend_t
获取当前延伸模式
延伸模式类型(cairo_extend_t枚举):

  • CAIRO_EXTEND_NONE - 不延伸 图案区域外不绘制(透明)
  • CAIRO_EXTEND_REPEAT - 平铺重复(默认)图案在水平和垂直方向重复
  • CAIRO_EXTEND_REFLECT - 镜像反射 图案以镜像方式重复
  • CAIRO_EXTEND_PAD - 边缘填充 用边缘像素颜色填充外部区域

图案过滤和查询

declare sub cairo_pattern_set_filter(byval pattern as cairo_pattern_t ptr, byval filter as cairo_filter_t)
设置缩放过滤算法,过滤类型:最近邻、双线性、高斯等
declare function cairo_pattern_get_filter(byval pattern as cairo_pattern_t ptr) as cairo_filter_t
获取当前过滤算法
Declare Function cairo_pattern_get_rgba(ByVal PATTERN As cairo_pattern_t Ptr, ByVal red As Double Ptr, ByVal green As Double Ptr, ByVal blue As Double Ptr, ByVal Alpha As Double Ptr) As cairo_status_t
获取实体颜色值(RGB/RGBA图案)
declare function cairo_pattern_get_surface(byval pattern as cairo_pattern_t ptr, byval surface as cairo_surface_t ptr ptr) as cairo_status_t
获取表面图案的源表面
declare function cairo_pattern_get_color_stop_rgba(byval pattern as cairo_pattern_t ptr, byval index as long, byval offset as double ptr, byval red as double ptr, byval green as double ptr, byval blue as double ptr, byval alpha as double ptr) as cairo_status_t
declare function cairo_pattern_get_color_stop_count(byval pattern as cairo_pattern_t ptr, byval count as long ptr) as cairo_status_t
获取渐变颜色停止点信息
declare function cairo_pattern_get_linear_points(byval pattern as cairo_pattern_t ptr, byval x0 as double ptr, byval y0 as double ptr, byval x1 as double ptr, byval y1 as double ptr) as cairo_status_t
获取线性渐变端点
declare function cairo_pattern_get_radial_circles(byval pattern as cairo_pattern_t ptr, byval x0 as double ptr, byval y0 as double ptr, byval r0 as double ptr, byval x1 as double ptr, byval y1 as double ptr, byval r1 as double ptr) as cairo_status_t
获取径向渐变圆参数
declare function cairo_mesh_pattern_get_patch_count(byval pattern as cairo_pattern_t ptr, byval count as ulong ptr) as cairo_status_t
获取补丁数量
declare function cairo_mesh_pattern_get_path(byval pattern as cairo_pattern_t ptr, byval patch_num as ulong) as cairo_path_t ptr
获取补丁路径
declare function cairo_mesh_pattern_get_corner_color_rgba(byval pattern as cairo_pattern_t ptr, byval patch_num as ulong, byval corner_num as ulong, byval red as double ptr, byval green as double ptr, byval blue as double ptr, byval alpha as double ptr) as cairo_status_t
获取角点颜色
declare function cairo_mesh_pattern_get_control_point(byval pattern as cairo_pattern_t ptr, byval patch_num as ulong, byval point_num as ulong, byval x as double ptr, byval y as double ptr) as cairo_status_t
获取控制点坐标

矩阵操作

declare sub cairo_matrix_init(byval matrix as cairo_matrix_t ptr, byval xx as double, byval yx as double, byval xy as double, byval yy as double, byval x0 as double, byval y0 as double)
完整初始化6个参数
declare sub cairo_matrix_init_identity(byval matrix as cairo_matrix_t ptr)
初始化为单位矩阵
declare sub cairo_matrix_init_translate(byval matrix as cairo_matrix_t ptr, byval tx as double, byval ty as double)
初始化为平移矩阵
declare sub cairo_matrix_init_scale(byval matrix as cairo_matrix_t ptr, byval sx as double, byval sy as double)
初始化为缩放矩阵
declare sub cairo_matrix_init_rotate(byval matrix as cairo_matrix_t ptr, byval radians as double)
初始化为旋转矩阵
declare sub cairo_matrix_translate(byval matrix as cairo_matrix_t ptr, byval tx as double, byval ty as double)
添加平移变换
declare sub cairo_matrix_scale(byval matrix as cairo_matrix_t ptr, byval sx as double, byval sy as double)
添加缩放变换
declare sub cairo_matrix_rotate(byval matrix as cairo_matrix_t ptr, byval radians as double)
添加旋转变换
declare function cairo_matrix_invert(byval matrix as cairo_matrix_t ptr) as cairo_status_t
求逆矩阵
declare sub cairo_matrix_multiply(byval result as cairo_matrix_t ptr, byval a as const cairo_matrix_t ptr, byval b as const cairo_matrix_t ptr)
矩阵乘法(组合变换)
Declare Sub cairo_matrix_transform_distance(ByVal matrix As Const cairo_matrix_t Ptr, ByVal dx As Double Ptr, ByVal dy As Double Ptr)
变换距离向量
Declare Sub cairo_matrix_transform_point(ByVal matrix As Const cairo_matrix_t Ptr, ByVal x As Double Ptr, ByVal y As Double Ptr)
变换点坐标

区域(Region)

Declare Function cairo_region_create() As cairo_region_t Ptr
区域创建:创建空区域
Declare Function cairo_region_create_rectangle(ByVal Rectangle As Const cairo_rectangle_int_t Ptr) As cairo_region_t Ptr
区域创建:从单个矩形创建
Declare Function cairo_region_create_rectangles(ByVal rects As Const cairo_rectangle_int_t Ptr, ByVal count As Long) As cairo_region_t Ptr
区域创建:从矩形数组创建
declare function cairo_region_copy(byval original as const cairo_region_t ptr) as cairo_region_t ptr
区域创建:复制区域
declare function cairo_region_reference(byval region as cairo_region_t ptr) as cairo_region_t ptr
生命周期管理:增加引用计数
declare sub cairo_region_destroy(byval region as cairo_region_t ptr)
生命周期管理:减少引用计数
declare function cairo_region_equal(byval a as const cairo_region_t ptr, byval b as const cairo_region_t ptr) as cairo_bool_t
生命周期管理:比较区域是否相等
declare function cairo_region_status(byval region as const cairo_region_t ptr) as cairo_status_t
生命周期管理:检查区域状态
Declare Sub cairo_region_get_extents(ByVal region As Const cairo_region_t Ptr, ByVal extents As cairo_rectangle_int_t Ptr)
区域信息查询:获取外接矩形
declare function cairo_region_num_rectangles(byval region as const cairo_region_t ptr) as long
区域信息查询:获取矩形数量
Declare Sub cairo_region_get_rectangle(ByVal region As Const cairo_region_t Ptr, ByVal nth As Long, ByVal Rectangle As cairo_rectangle_int_t Ptr)
区域信息查询:获取第n个矩形
declare function cairo_region_is_empty(byval region as const cairo_region_t ptr) as cairo_bool_t
区域信息查询:检查是否为空区域
Declare Function cairo_region_contains_rectangle(ByVal region As Const cairo_region_t Ptr, ByVal Rectangle As Const cairo_rectangle_int_t Ptr) As cairo_region_overlap_t
包含性测试:检查矩形与区域关系,返回:完全在内部、部分重叠、完全在外部
declare function cairo_region_contains_point(byval region as const cairo_region_t ptr, byval x as long, byval y as long) as cairo_bool_t
包含性测试:检查是否包含点
declare sub cairo_region_translate(byval region as cairo_region_t ptr, byval dx as long, byval dy as long)
平移区域
declare function cairo_region_subtract(byval dst as cairo_region_t ptr, byval other as const cairo_region_t ptr) as cairo_status_t
Declare Function cairo_region_subtract_rectangle(ByVal dst As cairo_region_t Ptr, ByVal Rectangle As Const cairo_rectangle_int_t Ptr) As cairo_status_t
区域差集
declare function cairo_region_intersect(byval dst as cairo_region_t ptr, byval other as const cairo_region_t ptr) as cairo_status_t
Declare Function cairo_region_intersect_rectangle(ByVal dst As cairo_region_t Ptr, ByVal Rectangle As Const cairo_rectangle_int_t Ptr) As cairo_status_t
区域交集
declare function cairo_region_union(byval dst as cairo_region_t ptr, byval other as const cairo_region_t ptr) as cairo_status_t
Declare Function cairo_region_union_rectangle(ByVal dst As cairo_region_t Ptr, ByVal Rectangle As Const cairo_rectangle_int_t Ptr) As cairo_status_t
区域并集
declare function cairo_region_xor(byval dst as cairo_region_t ptr, byval other as const cairo_region_t ptr) as cairo_status_t
Declare Function cairo_region_xor_rectangle(ByVal dst As cairo_region_t Ptr, ByVal Rectangle As Const cairo_rectangle_int_t Ptr) As cairo_status_t
区域异或

调试函数

declare sub cairo_debug_reset_static_data()
重置静态数据,清理Cairo内部缓存(用于内存泄漏调试)

评论一下?

OωO
取消