cairo api

本文详细介绍了Cairo图形库中用于图像变换的API,包括平移、旋转、缩放以及淡出绘图操作。同时,还讲解了如何设置字体大小、颜色,获取文本范围以及进行文本绘制。通过示例代码展示了如何使用Cairo在PNG文件上绘制矩形和文本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

void cairo_translate(cairo_t *cr, double tx, double ty);

通过将用户空间的起源(tx,ty),修改当前的变换矩阵。使图片平移

void cairo_rotate(cairo_t *cr, double angle);

由用户空间轴旋转角度的弧度修改当前的变换矩阵。角度旋转方向由x轴正向朝着积极的Y轴。使图片旋转

旋转函数接受弧度做参数(用M_PI去除)

注意:使用时,它是影响全局的,也就是旋转了之后,后面画的一切都是旋转的,所以旋转之前做一下cairo_save,完成需要的旋转之后做一下cairo_restore。

void cairo_scale(cairo_t *cr, double sx, double sy);

修改当前的变换矩阵,按比例缩放的X和Y轴的用户空间分别为sx和sy,sx指宽度缩放倍数,sy指高度缩放倍数

void cairo_paint_with_alpha(cairo_t *cr, double alpha);

一个绘图操作,使绘制淡出使用alpha,alpha在0(透明)和1(不透明)之间。

 

#############################################################################

cairo第二部分讲解

1.void cairo_set_font_size(cairo_t *cr, double size);

设置字体大小,默认的字体大小为10。

2.cairo_set_source_rgb(cr, 1, 1, 1);  //设置源的颜色为白色

                                              红,绿,蓝

3.void cairo_text_extents(cairo_t *cr, const char *utf8, cairo_text_extents_t *extents);

获取文本字符串的范围,extents描述一个用户空间的矩形包围“签署”的文本部分。

cairo_text_extents_t extents;

std::string tmpstr = "Hello world";

cairo_text_extents(cr, tmpstr.c_str(), &extents);

cairo_move_to(cr, 5, -extents.y_bearing); // 写入一行字,定位这行字在大矩形框内位置

cairo_show_text(cr, tmpstr.c_str());

cairo_translate(cr, 0, -extents.y_bearing + 15); // 用户空间矩形框往下平移,则第二行文字可以写入。

extents包含x_advance和y_advance,先通过cairo_translate(cr, 0, 15)平移用户空间的矩形框x=0,y=15。

然后cairo_show_text()。

4.cairo_rectangle(cr, 10, 10, 200, 200); // 画一个方块,位置从坐标(10,10)开始,宽200,高200。

5.cairo_fill(cr);//填充,使用的颜色当然是上面设置的颜色。

6.

#include  

#include  

#include 

#include 

int main() 

{

FILE *file; 

file=fopen("a.png","w");//打开一个文件,写入,文件名为a.png 


cairo_t *cr; //声明一支画笔 

cr=cairo_create();//创建画笔 

cairo_set_target_png(cr,file,CAIRO_FORMAT_ARGB32,400,400);//设置画布,就是文件,a.png 


cairo_set_rgb_color(cr,0,1,0);//设置画笔颜色,也就是红,绿,蓝,这里设置成绿色。 

cairo_rectangle(cr,10,10,200,200);//画一个方块,位置从坐标(10,10)开始,宽200,高200 

cairo_fill(cr);//填充,使用的颜色当然是上面设置的颜色。 

cairo_move_to(cr,250,200);//将画笔移动到(250,200) 

cairo_select_font (cr, "DongWen--Song", 

CAIRO_FONT_SLANT_NORMAL, 

CAIRO_FONT_WEIGHT_NORMAL);//为cairo设置一个字体,字体名DongWen--Song,非斜体,非粗体。 

cairo_scale_font(cr,60);//缩放字体到60倍 

cairo_show_text(cr,"hello world");//画出一个串 

cairo_destroy(cr);//销毁画笔 

fclose(file);//关闭文件 

 

Cairo 概念 ................................................................................................................................... 3 环境 (Context) ............................................................................................................................. 3 路径 (Path) ................................................................................................................................... 3 源 (Source) ................................................................................................................................... 3 外观 (Surface) .............................................................................................................................. 3 蒙板 (Mask) ................................................................................................................................. 4 图案 (Pattern) ............................................................................................................................... 4 二Cairo 后端 ................................................................................................................................... 4 1. PNG 图像 ................................................................................................................................. 4 2. PDF 文件 ................................................................................................................................. 5 3. SVG 文件 ................................................................................................................................. 6 4. GTK 窗口 ................................................................................................................................ 7 三 基本绘图 ..................................................................................................................................... 9 直线段 .......................................................................................................................................... 9 描绘 (Stroke) 与填充 (Fill) ..................................................................................................... 12 虚线 (Dash) ................................................................................................................................ 14 线帽 (Line caps) ........................................................................................................................ 17 线的交合 (Line joins) ................................................................................................................ 19 四 高级形状绘制 ........................................................................................................................... 21 基本形状..................................................................................................................................... 21 复杂的图形................................................................................................................................. 24 填充 (Fill) .................................................................................................................................. 27 纯色 (Solid color) .................................................................................................................. 27 图案 (Pattern) ......................................................................................................................... 28 渐变 (Gradient) ...................................................................................................................... 32 五 透明........................................................................................................................................... 35 透明的矩形................................................................................................................................. 35 淡出的效果................................................................................................................................. 37 “等待”的演示 ............................................................................................................................. 40 六 合成........................................................................................................................................... 43 七 裁剪与遮蔽 ............................................................................................................................... 46 裁剪 ............................................................................................................................................ 46 裁剪矩形..................................................................................................................................... 49 遮蔽 ............................................................................................................................................ 53 变换 ............................................................................................................................................ 55 平移......................................................................................................................................... 55 旋转......................................................................................................................................... 56 缩放......................................................................................................................................... 58 错切......................................................................................................................................... 60 椭圆......................................................................................................................................... 63 星星......................................................................................................................................... 65 七 文本........................................................................................................................................... 68 灵魂伙伴..................................................................................................................................... 68 一个字接一个字…… ................................................................................................................. 71 膨胀 ............................................................................................................................................ 73 八 图像........................................................................................................................................... 76 图像的显示................................................................................................................................. 77 垂帘效果(Blind Down) ......................................................................................................... 78 光谱效果..................................................................................................................................... 81
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值