使用cairo绘制图形的部分函数总结

一 绘制文本

[cpp]  view plain  copy
  1. //设置源的颜色  
  2. cairo_set_source_rgb(cr,0.627,0,0);  
  3. //选择字体类型或尺寸  
  4. cairo_select_font_face(cr,"Adobe Heiti Std",CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL);  
  5. cairo_set_font_size(cr,24);  
  6.           
  7. //从图像区域的(40.0,64.0)开始绘制  
  8. cairo_move_to(cr,40.0,64.0);  
  9. //使用show_text  
  10. cairo_show_text(cr,"Hello Cairo!");  

二 绘制线段

[c-sharp]  view plain  copy
  1. cairo_t *cr;  
  2.           
  3. //生成环境  
  4. cr = gdk_cairo_create(widget->window);  
  5.           
  6. //设置线段颜色和粗细  
  7. cairo_set_source_rgb(cr,0,0,0);  
  8. cairo_set_line_width(cr,0.5);  
  9. //count保存左键点击的次数,即数组内保存的点的坐标数  
  10. //从第一个点开始,每个点依次与其它点绘制一条线段(实际上绘制了两条)  
  11. //cairo_move_to和cairo_line_to在cr中定义了绘图路径  
  12. int i,j;  
  13.           
  14. for(i = 0;i <= count-1;i++)  
  15. {  
  16.        for(j = 0;j <= count-1;j++)  
  17.         {  
  18.               cairo_move_to(cr,coordx[i],coordy[i]);  
  19.                         cairo_line_to(cr,coordx[j],coordy[j]);  
  20.                 }  
  21.         }  
  22.           
  23. count = 0;  
  24. //cairo_stroke将cr中的路径绘制出来(与显示文本的cairo_show_text不同)  
  25. cairo_stroke(cr);  
  26. cairo_destroy(cr);  

三 绘制矩形

[cpp]  view plain  copy
  1. cairo_t *cr;  
  2. cr = gdk_cairo_create(widget->window);  
  3. cairo_set_source_rgb(cr,0,0,0);  
  4. cairo_set_line_width(cr,1);  
  5. //绘制一个矩形,起点是20 20,长120,宽80  
  6. cairo_rectangle(cr,20,20,120,80);  
  7. //绘制一个正方形,是矩形的特例,长宽相等  
  8. cairo_rectangle(cr,180,20,80,80);  
  9. //绘制边线,且保留路径  
  10. cairo_stroke_preserve(cr);  
  11. cairo_set_source_rgb(cr,0,0,1);  
  12. //填充,且清除路径  
  13. cairo_fill(cr);  

四 绘制圆形

[cpp]  view plain  copy
  1. cairo_t *cr;  
  2. cr = gdk_cairo_create(widget->window);  
  3. int width,height;  
  4.         gtk_window_get_size(GTK_WINDOW(widget),&width,&height);  
  5. cairo_set_line_width(cr,9);  
  6. cairo_set_source_rgb(cr,0.69,0.19,0);  
  7. //描绘圆的轮廓,圆心是width/2,height/2,半径为宽和高较小的那个的一半再减10  
  8. //起始角为0,终止角为360  
  9. //注意,这实际上是绘制一条弧线。  
  10. cairo_arc(cr,width/2,height/2,(width < height ? width:height)/2 - 10,0,2 * M_PI);  
  11. //cairo_stroke_preserve () 函数会将它绘制的路径依然保存在 cairo 环境中,  
  12. //而 cairo_stroke () 所绘制的路径,在绘制完成后,就从 cairo的环境中清除了  
  13. cairo_stroke_preserve(cr);  
  14. cairo_set_source_rgb(cr,0.3,0.4,0.6);  
  15. //对使用 cairo_stroke_preserve () 函数绘制的路径进行蓝色填充。  
  16. //若上面使用cairo_stroke,则不填冲,因为stroke在绘制完路径后,就清除了,所以  
  17. //fill无法填充。  
  18. cairo_fill(cr);  
  19. cairo_destroy(cr);  

五 绘制弧线

[c-sharp]  view plain  copy
  1. cairo_set_source_rgb(cr,0,0,0);  
  2. //注意,这里的M_PI/4是指起点是M_PI/4的半径与弧的交点  
  3. cairo_arc(cr,90,160,40,M_PI / 4,M_PI);  
  4. //该圆弧并不是封闭的,只转过了180度,可以用close封闭它  
  5. cairo_close_path(cr);  
  6. cairo_stroke_preserve(cr);  
  7. cairo_set_source_rgb(cr,1,1,1);  
  8. cairo_fill(cr);  

六 绘制椭圆

[cpp]  view plain  copy
  1. cairo_set_source_rgb(cr,0,0,0);  
  2. //cairo_translate() 函数可通过平移用于空间的原点来修改当前的变换矩阵  
  3. cairo_translate(cr,220,180);  
  4. //设定椭圆长轴和短轴的比例  
  5. cairo_scale(cr,1,0.7);  
  6. cairo_arc(cr,200,180,50,0,2*M_PI);  
  7. cairo_stroke_preserve(cr);  
  8. cairo_set_source_rgb(cr,1,1,1);  
  9. cairo_fill(cr); 

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值