GTK常用接口——绘图

来源:互联网 发布:二维码生成软件 编辑:程序博客网 时间:2024/05/16 07:38
绘图
//实现过程
//在曝光事件信号"expose_event"所连接的回调函数里进行相应的绘图操作
gboolean  callback                     (GtkWidget *widget, GdkEventExpose *event, gpointer data)
{
// 绘图的相关操作
return FALSE;   //如果窗口里有其他控件,函数必须返回FALSE,否则窗口里的控件会被绘图覆盖
}
//Cairo环境
//Cairo环境保存着所有的图形状态参数,这些参数描述了图形的构成,譬如线条宽度、颜色、要绘制的外观(Surface)以及其它一些信息
//需要包含的头文件:#include <cairo.h>
//创建Cairo环境
cairo_t*    gdk_cairo_create           (GdkDrawable *drawable);
//回收所有Cairo环境所占用的内存资源
void        cairo_destroy              (cairo_t *cr);
//Cairo简单图形的绘制
//在Cairo中,绘图要从一条空路径开始,首先定义一条路径,然后通过绘制/填充操作使之可见
//定义路径前,通常需要一些简单的设置,如线的宽度,线的颜色
//线宽的设置
void      cairo_set_line_width         (cairo_t *cr, double width);
//颜色的设置
void      cairo_set_source_rgb         (cairo_t *cr, double r, double g, double b);
r,g,b: 0.0-1.0
//直线
//设置直线的起点与终端坐标
void      cairo_move_to                (cairo_t *cr, double x,double y);
void      cairo_line_to                (cairo_t *cr, double x, double y);
//矩形
//设置矩形路径
void      cairo_rectangle              (cairo_t *cr, double x, double y, double width, double height );
x,y: 矩形的起点坐标
width,heigh: 矩形的宽度和高度
//圆形
//设置圆的路径
void      cairo_arc                    (cairo_t *cr, double xc, double yc, double radius, double angle1, double angle2);
xc,yc: 圆的起点坐标; radius: 圆的半径
angle1: 起始角; angle2: 终止角
//绘制或填充
//绘制cairo环境的路径
void      cairo_stroke                 (cairo_t *cr);
void      cairo_stroke_preserve        (cairo_t *cr);
//区别: cairo_stroke()所绘制的路径,在绘制完成后会清除,而cairo_stroke_preserve()函数会将它绘制的路径依然保存在cairo环境中
//填充cairo环境的闭合路径
void      cairo_fill                   (cairo_t *cr);
//写字
//设置字体风格
void      cairo_select_font_face       (cairo_t *cr, const char *family, cairo_font_slant_t slant, cairo_font_weight_t weight);
 family: 字体风格,可使用 "fc-list" 命令查看系统所安装字体
 slant: 倾斜模式
 weight: 加粗模式
//设置字体的大小
void      cairo_set_font_size          (cairo_t *cr, double size);
//写字
void      cairo_show_text              (cairo_t *cr, const char *utf8);
//utf8: 如果要显示中文,必须是utf8的编码
//绘画
//设置画图的图片
void      gdk_cairo_set_source_pixbuf  (cairo_t *cr, const GdkPixbuf *pixbuf, double pixbuf_x, double pixbuf_y );
pixbuf: 图片资源对象
pixbuf_x,pixbuf_y: 画图的起点位置
//绘制设置好的图片
void      cairo_paint                  (cairo_t *cr);
原创粉丝点击