Cairo图形指南-Cairo后端_第1页
Cairo图形指南-Cairo后端_第2页
Cairo图形指南-Cairo后端_第3页
Cairo图形指南-Cairo后端_第4页
Cairo图形指南-Cairo后端_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Cairo(3)Cairo后端Cairo支持多种后端,本文基于几个例如表达如何使用Cairo各种后端创立PNGPDFSVGCairoGTKPNG图像(example-1.c)用于生成PNG图像。<cairo.h>intmain(intargc,char*argv[]){cairo_surface_t*surface;cairo_t*cr;48);}

surface=cairo_image_surface_create(CAIRO_FORMAT_ARGB32,320,cr=cairo_create(surface);cairo_set_source_rgb(cr,0.627,0,0);cairo_select_font_face(cr,“AdobeHeitiStd“,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL);cairo_set_font_size(cr,24.0);cairo_move_to(cr,10.0,34.0);cairo_show_text(cr,“我是中国人,我爱我的祖国。“);cairo_surface_write_to_png(surface,“image.png“);cairo_destroy(cr);cairo_surface_destroy(surface);return0;这个例如是一个很小的把握台程序,运行后可生成一份PNG图像文件。#include<cairo.h>上述头文件声明白上面例如中调用的函数以及一些常量的定义。cairo_surface_t*surface;cairo_t*cr;这两行代码声明白一个Cairo外观与一个Cairosurface=cairo_image_surface_create(CAIRO_FORMAT_ARGB32,320,48);cr=cairo_create(surface);现在我们生成了Cairo外观与Cairo环境,所生成的外观是一份320x48px的图像。cairo_set_source_rgb(cr,0.627,0,0);设置源的颜色为darkred,就好比是选择了暗红色的颜料。cairo_select_font_face(cr,“AdobeHeitiStd“,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL);cairo_set_font_size(cr,24.0);选择字体类型并设置其尺寸。〔“fc-list“体〕cairo_move_to(cr,10.0,34.0);cairo_show_textcr,“我是中国人,我爱我的祖国。;将“画笔”移动到图像区域的(10.0,34.0)位置开头绘制文本。cairo_surface_write_to_png(surface,“image.png“);这个函数创立PNG图像。cairo_destroy(cr);cairo_surface_destroy(surface);Cairo编译这个例如:$gcc-oexample-1`pkg-config--cflags--libsgtk+-2.0`example-1.cPNG图像如以以下图所示:PDF文件(example-2.c)CairoPDF与第一个例如所生成的图像是一样的。#include<cairo.h>#include<cairo-pdf.h>intmain(intargc,char*argv[]){cairo_surface_t*surface;cairo_t*cr;surface=cairo_pdf_surface_create(“pdffile.pdf“,320,48);cr=cairo_create(surface);cairo_set_source_rgb(cr,0.627,0,0);cairo_select_font_face(cr,“AdobeHeitiStd“,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL);cairo_set_font_size(cr,24.0);cairo_move_to(cr,10.0,34.0);cairo_show_text(cr,“我是中国人,我爱我的祖国。“);cairo_show_(cr);cairo_destroy(cr);cairo_surface_destroy(surface);return0;}编译这个例如:$gcc-oexample-2`pkg-config--cflags--libsgtk+-2.0`example-2.cPDF文件,请使用PDF阅读器查看,LinuxEvince或KPDF。surface=cairo_pdf_surface_create(“pdffile.pdf“,320,48);pdf文件,必需使用cairo_pdf_surface函数创立一个pdf外观。pdfcairo_show_(cr);PDF文档在Evince中显示效果如以以下图所示:SVG文件CairoSVGSVG(ScalbleVectorGraphics)文件。SVG技术近几年很热门。#include<cairo.h>#include<cairo-svg.h>intmain(intargc,char*argv[]){cairo_surface_t*surface;cairo_t*cr;surface=cairo_svg_surface_create(“svgfile.svg“,320,48);cr=cairo_create(surface);cairo_set_source_rgb(cr,0.627,0,0);cairo_select_font_face(cr,“AdobeHeitiStd“,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL);cairo_set_font_size(cr,24.0);cairo_move_to(cr,10.0,34.0);cairo_show_textcr,“我是中国人,我爱我的祖国。;cairo_destroy(cr);cairo_surface_destroy(surface);return0;}编译这个例如:$gcc-oexample-3`pkg-config--cflags--libsgtk+-2.0`example-3.cSVG文件可以使用Firefox、Opera、Inkscape程序查看。surface=cairo_svg_surface_create(“svgfile.svg“,320,48);要生成一份SVG文件,必需使用cairo_svg_surface_create函数创立一个svgSVG文件,使用Firefox查看结果如以以下图所示:GTK窗口GTKCairoGTKCairo绘图模型将贯穿于本指南。#include<cairo.h>#include<gtk/gtk.h>staticgbooleanon_expose_event(GtkWidget*widget,GdkEventExpose*event,gpointerdata){cairo_t*cr;cr=gdk_cairo_create(widget->window);cairo_set_source_rgb(cr,0.627,0,0);cairo_select_font_face(cr,“AdobeHeitiStd“,CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_NORMAL);cairo_set_font_size(cr,24.0);cairo_move_to(cr,10.0,34.0);cairo_show_text(cr,“我是中国人,我爱我的祖国。“);cairo_destroy(cr);returnFALSE;}intmain(intargc,char*argv[]){GtkWidget*window;gtk_init(&argc,&argv);window=gtk_window_new(GTK_WINDOW_TOPLEVEL);g_signal_connect(window,“expose-event“,G_CALLBACK(on_expose_event),NULL);g_signal_connect(window,“destroy“,G_CALLBACK(gtk_main_quit),NULL);gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);gtk_window_set_default_size(GTK_WINDOW(window),320,48);gtk_widget_set_app_paintable(window,TRUE);gtk_widget_show_all(window);gtk_main();return0;}GTK+如以以下图所示:#include<cairo.h>#include<gtk/gtk.h>cairo与gtk+库的头文件。g_signal_connect(window,“expose-event“,G_CALLBACK(on_expose_event),NULL);GTK+窗口被重绘时,会发出expose-event信号,我们可将这一信号连接到on_expose_event回调函数上。gtk_widget_set_app_paintable(window,TRUE);GtkDrawingAreawidget或者更widget,本例选择GtkWindow。由GtkWindowwidget对expose-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论