Cairo 图形指南(10) —— 文本
Cario教程
R语言的高质量图形渲染库CairoR的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大。
R语言作为统计学一门语言,一直在小众领域闪耀着光芒。
直到大数据的爆发,R语言变成了一门炙手可热的数据分析的利器。
随着越来越多的工程背景的人的加入,R语言的社区在迅速扩大成长。
现在已不仅仅是统计领域,教育,银行,电商,互联网….都在使用R语言。
要成为有理想的极客,我们不能停留在语法上,要掌握牢固的数学,概率,统计知识,同时还要有创新精神,把R语言发挥到各个领域。
让我们一起动起来吧,开始R的极客理想。
关于作者:∙张丹(Conan), 程序员Java,R,PHP,Javascript∙weibo:@Conan_Z∙blog: http://blog.fens.me∙email: bsspirit@转载请注明出处:http://blog.fens.me/r-cairo/前言R语言不仅在统计分析,数据挖掘领域,计算能力强大。
在数据可视化上,也不逊于昂贵的商业。
当然,背后离不开各种开源软件包的支持,Cairo就是这样一个用于矢量图形处理的类库。
Cairo可以创建高质量的矢量图形(PDF, PostScript, SVG) 和位图(PNG, JPEG, TIFF),同时支持在后台程序中高质量渲染!本文将介绍,Cairo在R语言中的使用。
目录1.Cairo介绍2.Cairo安装3.Cairo使用1. Cairo介绍在信息领域中,cairo 是一个让用于提供矢量图形绘图的免费库,cairo 提供在多个背景下做2D 的绘图,高级的更可以使用硬件加速功能。
虽然cairo 是使用C语言撰写的,但是当使用cairo 时,可以用许多其他种语言来使用,包括有C++、C#、Java、Python、Perl、Ruby、Scheme、Smalltalk 以及许多种语言,cairo 在GNU LGPL 与Mozilla Public License (MPL) 两个认证下发布。
CorelDraw10入门
CorelDraw10入门今天向飞特的朋友们介绍Corel Draw 10入门教程,教程介绍的很全面,适合初中级CDR学习者学习,希望教程对朋友们有所帮助!Corel Draw 10的安装Corel Draw 10有3张光盘,第一张为程序和字体碟,第二、三张为矢量、位图、声音、动画素材光碟。
不熟悉Corel Draw的用户可以采取典型安装,大约需要250M的磁盘空间(包括Corel Draw, Corel PhotoPaint,Corel Trace以及相关帮助、一些不错的辅助工具,文件过滤器,字体等)。
对Corel Draw有一定认识的用户可以挑选以下部件安装:Corel Draw (主程序)Corel PhotoPaint (一个与Photoshop可以抗衡的位图编辑软件,视需要而定)Corel RAVE (制作矢量动画的强大工具,可输出SWF或SVG)Corel Trace (从位图创建各种效果矢量图的工具)Barcode Wizard (创建国际标准条形码的工具)Thumbnail View (使你可以在"我的电脑"、"资源管理器"里面以缩略图查看Corel Draw/PhotoPaint文件的工具)文件过滤器(请挑选常用的文件类型,例如DOC,RTF,PCX,GIF,BMP,MOV,HTML,SWF等等)安装向导中,字典应选择English - U.K.或者English - U.S.。
而关于色彩配置,如果没有相应的设备或参数,可以按照缺省进行。
字体部分,Corel Draw提供了上千种英文字体,可以按照类型或者名称排列,可根据自己的喜好进行挑选。
安装完毕后需要重新启动系统。
Corel Draw 10 的启动启动Corel Draw 10的时候会出现欢迎屏幕,提示用户进行创建、打开或者其他动作,如果没有需要可以把"Show this Welcome Screen at startup"去掉。
CorelDRAW 10软件大纲教学课程
实训1 使用“图框精确剪裁”命令 实训 使用“图框精确剪裁 命令
创建精确剪裁对象 编辑精确剪裁对象
创建精确剪裁对象
使用“精确剪裁”命令可以将一个对象内置于另一个容器对象中,被内 置的对象称为精确剪裁对象。 导入一幅位图作为内置对象,输入文本对象作为容器对象。选中位图对 象,选择“效果”>“图框精确剪裁”>“放置在容器中”菜单,此时光标 将变成黑色的水平箭头,单击作为容器对象的文本,即可得到精确剪裁 对象。
第10章 10章
应用特殊效果
Байду номын сангаас
10.1 创建透镜与透视效果 10.2 精确剪裁对象与制作浮雕效果
10.3 调整对象的颜色与色调 综合实训——制作报纸广告
10.1 创建透镜与透视效果
实训1 使用“透镜”泊坞窗 实训 使用“透镜” 实训2 使用“添加透视点”命令 实训 使用“添加透视点”
使用“透镜”泊坞窗
“颜色平衡”命令
利用“颜色平衡”命令可以将青色或红色、品红或绿色、 利用“颜色平衡”命令可以将青色或红色、品红或绿色、黄色或 蓝色添加到对象选定的色调中。 蓝色添加到对象选定的色调中。 选中对象,选择“效果 调整 效果”> 调整”> 颜色平衡 菜单,打开“ 颜色平衡”菜单 选中对象,选择 效果 >“调整 >“颜色平衡 菜单,打开“颜色平 对话框,在其中设置相关参数,单击“确定”按钮, 衡”对话框,在其中设置相关参数,单击“确定”按钮,即可调 整对象的色彩与色调。 整对象的色彩与色调。
“伽玛值”命令
通过调整伽玛值,可以在较低对比度区域强化对象细节而不会影 响对象阴影或高光。 选定对象,选择“效果”>“调整”>“伽玛值”菜单,打开“伽玛值”对 话框,左右拖动“伽玛值”滑块,调整中间色调深浅。参数设置 好后,单击“确定”按钮即可。
CorelDRAW 10入门
在CorelDRA W 中,可以通过编辑节点、应用交互式变形效果、使用封套及菜单命令等不同的方法对对象进行一系列的变形操作。
4.1 曲线对象变形操作曲线图形的本质是由节点与线段构成的。
在曲线图形的路径中,节点可以决定路径的改变方向,而相邻两个节点之间的部分就是线段,曲线图形可以有曲线线段和直线线段两种类型,它们之间可以互相转换。
在CorelDRAW中,使用手绘工具、贝兹曲线工具、艺术笔触工具或螺旋形工具所绘制的图形都是曲线。
当使用绘图工具绘制出曲线图形时,经常需要对其进行必要的修改才能符合要求。
单击工具箱中的造形工具(Shape Tool)图标右下角的小三角形,将弹出造形工具组中的所有造形工具,如图4-1-1所示。
其中,使用造形工具可以通过编辑节点来使曲线对象进行变形。
由于封闭的图形也含有节点,因此造形工具同样可以对封闭图形进行变形操作,但在有些情况下,需要将其转换为曲线对象,方能对节点进行编辑。
图4-1-1 利用造形工具可以改变所选对象的外形、改变矩形的圆角、制作弧线、扇形等,方法如下。
(1)使用选取工具选取对象后,选择造形工具,则该对象的外形曲线上将显示全部节点。
将光标移至曲线图形的某个节点上单击,即可将该节点选中,这时被选中的节点将显示用于调节它的控制点,如图4-1-2所示。
4对象变形图4-1-2 选取节点当使用造形工具单击选中直线线段的尾端节点时,尾端节点将呈空心方块状,而选中曲线线段的尾端节点时,尾端节点则呈实心方块状,如图4-1-3所示。
图4-1-3 选取直线和曲线的尾端节点(2)如要选择封闭图形中的某一节点,只需使用造形工具单击该封闭图形中要选择的节点即可;如按住Shift键,并使用工具逐个单击要选择的节点,或使用工具框选几个节点,即可一次选择多个节点;如在选择造形工具后,单击其属性栏中的Select All Nodes(选择所有节点)按钮,或选择Edit(编辑)| Select All(全选)| Nodes(节点)菜单,可选择所有节点。
Cairo 图形指南(10) —— 文本
Cairo 图形指南 (10) —— 文本 本篇讲述如何处理文本。
灵魂伙伴第一个示例是在 GTK+ 窗口中显示《灵魂伙伴》的部分歌词。
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include <cairo.h>#include <gtk/gtk.h>static gbooleanon_expose_event(GtkWidget *widget,GdkEventExpose *event,gpointer data){cairo_t *cr;cr = gdk_cairo_create(widget->window);cairo_set_source_rgb(cr, 0.1, 0.1, 0.1);cairo_select_font_face(cr, "Purisa",CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD);cairo_set_font_size(cr, 13);cairo_move_to(cr, 20, 30);cairo_show_text(cr, "Most relationships seem so transitory"); cairo_move_to(cr, 20, 60);cairo_show_text(cr, "They're all good but not the permanent one");cairo_move_to(cr, 20, 120);cairo_show_text(cr, "Who doesn't long for someone to hold");cairo_move_to(cr, 20, 150);cairo_show_text(cr, "Who knows how to love you without being told"); cairo_move_to(cr, 20, 180);cairo_show_text(cr, "Somebody tell me why I'm on my own"); cairo_move_to(cr, 20, 210);35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 cairo_show_text(cr, "If there's a soulmate for everyone");cairo_destroy(cr);return FALSE;}int main (int argc, 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), 420, 250); gtk_window_set_title(GTK_WINDOW(window), "Soulmate");gtk_widget_set_app_paintable(window, TRUE);gtk_widget_show_all(window);gtk_main();return 0;}在这个示例中,显示了 Natasha Bedingfield 的《灵魂伙伴》的部分歌词。
Cairo1教程
Cairo教程这篇教程来自于Michael Urman的python程序员cairo教程.原来的代码片段已经被翻译成C代码,文字仅做了必要的修改.Cairo是一个强大的2D图形库。
本文档会向你介绍cairo如何工作和cairo的诸多函数,你会使用它们创建想象中的图像体验.以便能在自己的计算机上继续下面的步骤,你需要这些东西:1.Cairo自身。
你需要库和开发用的(头)文件。
如果还没有准备好这些,请参考Download2.一个C编译器. 这篇FAQ中有一个关于如何把代码编译为希望的程序的最小示例。
如何你想在阅读过程中想查看这篇教程中包含的代码片段,可以点击本教程中的相关图片,就会获得一个包含期望的绘制代码的小c程序.或者如果你愿意面对挑战,可以把例子翻译为自己喜欢的编程语言,这样就只需上面列出的cairo.注意:这篇文档中提到的cairo_push_group()和cairo_pop_group(). 需要最小1.2.0版的cairo.目录∙cairo绘制模型o名词o动词∙使用cairo绘制o准备和选择源o创建路径∙认识文本∙使用变换∙下一步做什么∙提示和技巧o线宽o文本对齐Cairo绘制模型为了解释cairo使用的操作,我们先深入cairo绘制模型。
这涉及到仅几个概念,他们会一次又一次的应用于不同的函数。
首先我会介绍这些名词:目标(destination), 源(source), 蒙板(mask), 路径(path), 和上下文(context).之后我会介绍一些动词,他们提供了操作名词的方式和创建你所希望的图形的方法.名词Cairo的名词有些抽象。
我提供了一些描述这些名词之间关系的图表,来使这些概念具体化。
前三个名词对应的就是这一节图中的三个层。
第四个名词路径当谈到它时把其画在了中间层上表示。
最后一个名词上下文在图上没有表示。
目标(Destination)目标就是用来在上面绘制的surface . 它可能是一个像素阵列,就和这篇教程中使用的一样,或者可能是一个SVG或PDF文件,或者其他别的东西。
cairo教程
Cairo绘制模型为了解释cairo使用的操作,我们先深入cairo绘制模型。
这涉及到仅几个概念,他们会一次又一次的应用于不同的函数。
首先我会介绍这些名词:目标(destination), 源(source), 蒙板(mask), 路径(path), 和上下文(context). 之后我会介绍一些动词,他们提供了操作名词的方式和创建你所希望的图形的方法.名词Cairo的名词有些抽象。
我提供了一些描述这些名词之间关系的图表,来使这些概念具体化。
前三个名词对应的就是这一节图中的三个层。
第四个名词路径当谈到它时把其画在了中间层上表示。
最后一个名词上下文在图上没有表示。
目标(Destination)目标就是用来在上面绘制的surface. 它可能是一个像素阵列,就和这篇教程中使用的一样,或者可能是一个SVG或PDF文件,或者其他别的东西。
当你使用图形元素的时候它们就被包含在Surface上,使用它可以建立复杂的工作就像在画布上绘制一样源(Source)就是你工作是用的“涂料”。
作为例子我把它显示为黑色,但是有有些半透明以显示它的下一层。
(看右图)和真正的涂料不一样的是,它不仅仅只是单一的颜色,可以是一个图案(pattern)或者之前创建的目标surface. 还和真正的涂料不一样的是源(Source)可以包含有透明度的信息----Alpha通道.蒙板(Mask)蒙板最重要的一点是:它控制着把源的哪些地方应用到目标上。
我把它显示为图中中间有一个洞的黄色的那个层,那个洞运行源通过。
当你使用一个绘制动词的时候,就像使用源在目标上盖了一个章。
凡是蒙板允许的地方源就被复制到目标。
蒙板不运行的地方对目标没有任何影响.路径(Path)路径在某种程度上是介于蒙板和上下文之间的一个东西。
我把它显示为蒙板层上的绿色的线。
它由路径相关的动词控制,可以被绘制动词使用.上下文(Context)上下文记录着可以影响动词的一切事物。
新标准中文版CorelDRAW10基础培训教程-第2章
单击【形状工具】,在四个角上的黑色小方块 上向内拖动鼠标,达到合适的角度后,松开鼠 标即可将普通矩形变为圆角矩形。
2.1.3
椭圆形工具
一、绘制椭圆形 在工具箱中单击【椭圆形工具】按钮,在绘图页 面中单击并拖拽鼠标,达到合适大小后,释放 鼠标即可绘制出一个椭圆。如图所示。
椭圆形的其他绘制方法如下: 按【F7】键,可以在绘图页面中适当的位置绘 制出椭圆形。 按住【Ctrl】键,在绘图页面上可以绘制出一 个正圆形。 按住【Shift】键,在绘图页面上可以绘制一个 以当前点为中心的椭圆形。 按住【Shift+Ctrl】键,在绘图页面上可以绘制 一个以当前点为中心的正圆形。
2.4.3
自然笔工具
一、【自然笔工具】的属性栏,如图所示
笔刷 书法 手绘平滑度 自然笔触预置
预置 喷雾器
压力
自然笔触宽度
二、预置模式 三、【笔刷】模式 四、【喷雾器】模式(属性栏如图所示)
五、【书法】模式(属性栏如图所示)
六、【压力】模式(属性栏如图所示)
2.4.4
标注工具
要对某图形进行标注,单击 【标注工具】按钮,然后在度 量的开始位置单击,再将鼠标 放置到要测量的结束位置单击, 再拖动鼠标选择放置标注文字 的位置即可标注出这段距离的 长短。对图形进行标注后的效 果如图所示。
属性栏中后面的几个参数介绍: 起始箭头选择器: 轮廓样式选择器: 终止箭头选择器: 自动闭合曲线: 轮廓宽度:
二、绘制直线或直线段图形 1、单击【手绘工具】按钮,将鼠标移动到绘图 窗口中时,可以看到光标变成一 个十字形, 并且在其右下角还有一段曲线。 2、在需要的位置单击鼠标左键确定直线的起 点,松开左键将鼠标移动到直线的终点位 置,然后再次单击鼠标左键。
[入门篇]CorelDRAW10 图纸工具入门
[入门篇]CorelDRAW10 图纸工具入门
Graphic Paper Tool(图纸工具) 今天向朋友们介绍CorelDRAW10中的图纸工具简单的使用方法,Graphic Paper Tool(图纸工具)主要用于绘制网格,在绘制曲线图或其他对象时辅助用户精确排列对象。
它的绘制方法非常简单:(1)从工具箱中的Polygon Tool(多边形工具)的级联菜单中选择Graphic Paper Tool(图纸工具)
(2)在Graphic Paper Tool(图纸工具)属性栏中的框中设置纵、横方向的网格数;
用图纸工具绘制的网格
(3)将鼠标移动到绘图页面中,用拖动的方式就可以绘制出所需的网格图形;
技巧:按住Ctrl 键拖动鼠标可绘制出正方形边界的网格(边界内的网格数则根据用户设定的纵、横向的网格数值,分别平均划分);按住Shift键拖动鼠标,即可绘制出以鼠标单击点为中心的网格。
而按住Ctrl + Shift键后拖动鼠标,则可绘制出以鼠标单击点为中心的正方形边界的网格。
Cairo包的说明:R图形设备使用Cairo图形库创建高质量的位图(PNG、JPEG、TIFF)、向
Package‘Cairo’November28,2023Version1.6-2Title R Graphics Device using Cairo Graphics Library for CreatingHigh-Quality Bitmap(PNG,JPEG,TIFF),Vector(PDF,SVG,PostScript)and Display(X11and Win32)OutputAuthor Simon Urbanek<***************************>,Jef-frey Horner<**************************>Maintainer Simon Urbanek<***************************>Depends R(>=2.4.0)Imports grDevices,graphicsSuggests pngEnhances FastRWebDescription R graphics device using cairographics library that can be used to create high-quality vec-tor(PDF,PostScript and SVG)and bitmap output(PNG,JPEG,TIFF),and high-quality render-ing in displays(X11and Win32).Since it uses the same back-end for all output,copy-ing across formats is WYSIWYG.Files are created without the dependence on X11or other ex-ternal programs.This device supports alpha channel(semi-transparent drawing)and result-ing images can contain transparent and semi-transparent regions.It is ideal for use in server envi-ronments(file output)and as a replacement for other devices that don't have Cairo's capabili-ties such as alpha support or anti-aliasing.Backends are modular such that any subset of back-ends is supported.License GPL-2|GPL-3SystemRequirements cairo(>=1.2/)URL /Cairo/NeedsCompilation yesRepository CRANDate/Publication2023-11-2808:44:24UTCR topics documented:Cairo (2)Cairo.capabilities (5)1Cairo.capture (6)Cairo.onSave (7)Cairo.serial (8)CairoFonMatch (8)CairoFonts (10)Index12 Cairo Create a new Cairo-based graphics deviceDescriptionCairo initializes a new graphics device that uses the cairo graphics library for rendering.The current implementation produces high-quality PNG,JPEG,TIFF bitmapfiles,high resolution PDF files with embedded fonts,SVG graphics and PostScriptfiles.It also provides X11and Windows interactive graphics devices.Unlike other devices it supports all graphics features including alpha blending,anti-aliasing etc.CairoX11,CairoPNG,CairoPDF,CairoPS and CairoSVG are convenience wrappers of Cairo that take the same arguments as the corresponding device it replaces such as X11,png,pdf,e of the Cairo function is encouraged as it is moreflexible than the wrappers.UsageCairo(width=640,height=480,file="",type="png",pointsize=12,bg="transparent",canvas="white",units="px",dpi="auto",...)CairoX11(display=Sys.getenv("DISPLAY"),width=7,height=7,pointsize=12,gamma=getOption("gamma"),bg="transparent",canvas="white",xpos=NA,ypos=NA,...)CairoPNG(filename="Rplot%03d.png",width=480,height=480,pointsize=12,bg="white",res=NA,...)CairoJPEG(filename="Rplot%03d.jpeg",width=480,height=480,pointsize=12,quality=75,bg="white",res=NA,...) CairoTIFF(filename="Rplot%03d.tiff",width=480,height=480,pointsize=12,bg="white",res=NA,...)CairoPDF(file=ifelse(onefile,"Rplots.pdf","Rplot%03d.pdf"),width=6,height=6,onefile=TRUE,family="Helvetica",title="R Graphics Output",fonts=NULL,paper="special",encoding,bg,fg,pointsize,pagecentre,...)CairoSVG(file=ifelse(onefile,"Rplots.svg","Rplot%03d.svg"),width=6,height=6,onefile=TRUE,bg="transparent",pointsize=12,...)CairoWin(width=7,height=7,pointsize=12,record=getOption("graphics.record"),rescale=c("R","fit","fixed"),xpinch,ypinch,bg="transparent",canvas="white",gamma=getOption("gamma"),xpos=NA,ypos=NA,buffered=getOption("windowsBuffered"),restoreConsole=FALSE,...)CairoPS(file=ifelse(onefile,"Rplots.ps","Rplot%03d.ps"),onefile=TRUE,family,title="R Graphics Output",fonts=NULL,encoding,bg,fg,width,height,horizontal,pointsize,paper,pagecentre,print.it,command,colormodel)Argumentswidth width of the plot area(also see units).height height of the plot area(also see units).file name of thefile to be created or connection to write to.Only PDF,PS andPNG types support connections.For X11type file specifies the display name.If NULL or""a reasonable default will be chosen which is"plot.type"forfile-oriented types and value of the DISPLAY environment variable for X11.Forimage types thefile name can contain printf-style formatting expecting one inte-ger parameter which is the page number,such as"Rplot%03d.png".The pagenumbers start at one.Thefilename is expanded using path.expand.type output type.This version of Cario supports"png","jpeg"and"tiff"bitmaps(png/tiff with transparent background),"pdf"PDF-file with embedded fonts,"svg"SVG-file,"ps"PostScript-file,"x11"X11interactive window and"win"Windows graphics.A special type"raster"creates an image back-end that pro-duces no actual outputfile but can be used in conjunction with any of dev.capture(),grid.cap()or Cairo:::.image()to create in-memory images.Depending onthe support of various backends in cairo graphics some of the options may notbe available for your system.See Cairo.capabilities function.pointsize initial text size(in points).canvas canvas color(must be opaque).The canvas is only used by devices that displaygraphics on a screen and the canvas is only visible only if bg is transparent.bg plot background color(can include alpha-component or be transparent allto-gether).units units for of the width and height specifications.It can be any of"px"(pixels),"in"(inches),"pt"(points),"cm"(centimeters)or"mm"(millimeters).dpi DPI used for the conversion of units to pixels.If set to"auto"the DPI resolutionwill be determined by the back-end....additional backend specific parameters(e.g.quality setting for JPEG(0..100),compression for TIFF(0,1=none,5=LZW(default),7=JPEG,8=Adobe De-flate),locator for a custom locator function in image back-ends)The PDF back-end supports following additional arguments:author,subject,creator,keywords,create.date and modify.date.If specified,all of theabove must be single strings.The dates must be in PDF-defined format,you canuse something like paste0("D:",gsub("[-:]","",.POSIXct(Sys.time(),"GMT"))),"Z")to convert from POSIXct to PDF format.In addition,the version argument(asdocumented in pdf)can be either a string or a scalar real number.However,thecairographics library only supports values1.4and1.5.All parameters listed below are defined by the other devices are are used by thewrappers to make it easier replace other devices by Cairo.They are describedin detail in the documentation corresponding to the device that is being replaced.display X11display,see X11gamma gamma correctionxpos see X11ypos see X11filename same as file in Cairores resolution in ppi,see png,will override dpi in Cairo if set to anything other than NA or NULL.Note that cairographics does not support tagging PNG outputfileswith DPI so the raster image will be produced with the dpi setting,but readersmay render it at some default dpi setting.quality quality of the jpeg,see jpegonefile logical:if true(the default)allow multiplefigures in onefile(see pdf).false is currently not supported by vector devicesfamily font family,see pdftitle see pdffonts see pdf,ignored,Cairo automatically detects and embeds fontspaper see pdf(ignored,Cairo uses device dimensions)encoding see pdf(ignored,Cairo uses native enconding except for symbols)fg see pdf(ignored)pagecentre see pdf(ignored,Cairo uses device dimensions and thus it is irrelevant)record Windows-specific,ignored on unixrescale Windows-specific,ignored on unixxpinch Windows-specific,ignored on unixypinch Windows-specific,ignored on unixbuffered Windows-specific,ignored on unixrestoreConsole Windows-specific,ignored on unixhorizontal see postscript(ignored)print.it see postscript(ignored)command see postscript(ignored)colormodel see postscript(ignored,Cairo always uses RGB or ARGB)ValueThe(invisible)return value is NULL if the device couldn’t be created or a Cairo object if successful.The vaule of the object is the device number.Cairo.capabilities5 Known issues•The X11backend is quite slow.The reason is the cairographics implementation of the back-end,so we can’t do much about it.It should be possible to drop cairographics’Xlib backend entirely and use image backend copied into an X11window instead.We may try that in future releases.•TrueType(and OpenType)fonts are supported when this package is compiled against a cairo graphics library configured with FreeType and Fontconfig support.Therefore make sure havea cairo graphics library with all bells and whistles to get a good result.•R math symbols are supported,but require a TrueType"Symbol"font accessible to Cairo under that name.See AlsoCairoFontsExamples#very simple KDECairo(600,600,file="plot.png",type="png",bg="white")plot(rnorm(4000),rnorm(4000),col="#ff000018",pch=19,cex=2)#semi-transparent reddev.off()#creates a file"plot.png"with the above plot#you can use any Cairo backend and get the same result#vector,bitmap or on-screenCairoPDF("plot.pdf",6,6,bg="transparent")data(iris)attach(iris)plot(Petal.Length,rep(-0.03,length(Species)),xlim=c(1,7),ylim=c(0,1.7),xlab="Petal.Length",ylab="Density",pch=21,cex=1.5,col="#00000001",main="Iris(yet again)",bg=c("#ff000020","#00ff0020","#0000ff20")[unclass(Species)])for(i in1:3)polygon(density(Petal.Length[unclass(Species)==i],bw=0.2),col=c("#ff000040","#00ff0040","#0000ff40")[i])dev.off()##remove the example files if not in an interactive sessionif(!interactive())unlink(c("plot.png","plot.pdf"))Cairo.capabilities Reports which output types are supported by this Cairo buildDescriptionCairo.capabilities returns a logical vector describing the capabilities of this particular Cairo build.6Cairo.captureUsageCairo.capabilities()DetailsThe Cairo package provides multiple back-ends,such as images(PNG,JPEG,TIFF),vector graph-ics(PDF,PostScript,SVG)or displays(X11,Windows).However,not all systems support all back-ends.The Cairo.capabilities function returns a logical vector showing which capabilities are supported in this particular Cairo build.Note that the capabilities depend both on the libraries available in the system as well as the compiled-in modules in cairo graphics.See AlsoCairoCairo.capture Capture contents of an image backend or a display list snapshot.DescriptionCairo.capture is essentially the same as dev.capture(native=TRUE)with the exception that it works where dev.capture doesn’t such as onSave callbacks.Cairo.snapshot is very similar to recordPlot except it also allows to retrieve the last snapshot. UsageCairo.capture(device=dev.cur())Cairo.snapshot(device=dev.cur(),last=FALSE)Argumentsdevice device number or an object of the class Cairo(as obtained from the Cairofunction).last logical,if FALSE then a new snapshot is created(exactly the same as recordPlot()), if TRUE then the last known snapshot is retrieved,if NA then a snapshot is createdfirst,but if the display list is empty last snapshot is retrieved instead.ValueCairo.capture:object of the class nativeRaster.Cairo.snapshot:object of the class recordedplot.Author(s)Simon UrbanekCairo.onSave7 Cairo.onSave Cairo callbacksDescriptionCairo.onSave set the onSave callback which allows R code to be run when Cairofinalizes a page (either due to a new page being created or by the device being closed).The callback expects function(device,page)where device will be the device number and page is the currentlyfin-ished page number(starting at1).UsageCairo.onSave(device=dev.cur(),onSave)Argumentsdevice device number or Cairo object(as returned by the Cairo function)onSave function that will replace the current callback or NULL to remove the current callbackValueThe old callback being replaced or NULL if there was none.NoteThe function onSave will be evaluated in the global environment and no error checking is done,so you must make sure to catch errors,otherwise the behavior is undefined(and may included crashing R or other bad things).Author(s)Simon UrbanekSee AlsoCairoExamplesif(require(png,quietly=TRUE)){dev<-Cairo(800,600,type= raster )Cairo.onSave(dev,function(dev,page).GlobalEnv$png<-writePNG(Cairo.capture(dev)))plot(1:10,col=2)dev.off()str(png)}Cairo.serial Check for changes in the graphics state of Cairo devices.DescriptionCairo.serial returns an integer that is increased with every plotting operation on the device.This allows user code to determine whether any new content has been added to the device since it was last checked.UsageCairo.serial(device=dev.cur())Argumentsdevice device number or an object of the class Cairo(as obtained from the Cairo function).ValueInteger value.NoteThe integer value overflows to0at2^31.Typically only equality should be checked and for such it is extremely unlikely that the state has changed yet the serial value is the same due to overflow.Author(s)Simon UrbanekCairoFonMatch Find installed fonts with a fontconfig patternDescriptionCairoFontMatch searches for fonts based on a fontconfig pattern.UsageCairoFontMatch(fontpattern="Helvetica",sort=FALSE,verbose=FALSE)Argumentsfontpattern character;a fontconfig pattern.sort logical;if’FALSE’,display only the best matching font for the pattern.If’TRUE’,display a sorted list of best matching fonts.verbose logical;if’FALSE’,display the family,style,andfile property for the pattern.if’TRUE’,display the canonical font pattern for each match.DetailsThis function displays a list of one or more fonts matching the supplied fontconfig pattern.sort=’FALSE’displays the font that Cairo will use for the supplied pattern,while sort=’TRUE’displays a sortedlist of best matching fonts.The simplest fontconfig pattern matching all installed fonts is":".Here’swhat CairoFontMatch(":")displays on this system:1.family:"Bitstream Vera Sans",style:"Roman",file:"/usr/share/fonts/truetype/ttf-bitstream-vera/verbose=’FALSE’displays the font properties’family’,’style’,and’file’,while verbose=’TRUE’will display the canonical font pattern,displaying all properties known for the font(output of Cairo-FontMatch(":",verbose=TRUE)):1.family:"Bitstream Vera Sans",style:"Roman",file:"/usr/share/fonts/truetype/ttf-bitstream-vera/"Bitstream Vera Sans-12:familylang=en:style=Roman:stylelang=en:slant=0:weight=80:width=100:pixelsiA simple approach to selecting a font starts with calling CairoFontMatch(":",sort=TRUE)to list allavailable fonts.Next,the user will choose a font from the list and call CairoFontMatch("FamilyName:style=PreferredStyle",so substituting"FamilyName"and"PreferredStyle"with the desired values.If only one font is found,then the user has found the fontconfig pattern that will select the desired font.Otherwise,the userwill call CairoFontMatch with verbose=TRUE to determine other properties to add to the pattern toattain the desired font,for instance the fontformat.The following excerpt is from the fontconfig user’s manual(http://fontconfi/)and better de-scribes the fontconfig pattern definition:"Fontconfig provides a textual representation for patterns that the library can both accept and gen-erate.The representation is in three parts,first a list of family names,second a list of point sizesandfinally a list of additional properties:<families>-<point sizes>:<name1>=<values1>:<name2>=<values2>...Values in a list are separated with commas.The name needn’t include either families or point sizes;they can be elided.In addition,there are symbolic constants that simultaneously indicate both aname and a value.Here are some examples:Font Pattern Meaning----------------------------------------------------------Times-1212point Times RomanTimes-12:bold12point Times BoldCourier:italic Courier Italic in the default sizeMonospace:matrix=1.101The users preferred monospace fontwith artificial obliquing10CairoFonts The’\’,’-’,’:’and’,’characters in family names must be preceeded by a’\’character to avoid having them misinterpreted.Similarly,values containing’\’,’=’,’_’,’:’and’,’must also have them preceeded by a’\’character.The’\’characters are stripped out of the family name and values as the font name is read."Known issues•This function is only available when the Cairo graphics library is configured with FreeType and FontConfig support.See AlsoCairoFonts,CairoCairoFonts Set the fonts used for all Cairo graphics devices.DescriptionCairoFonts initializes the fonts used for Cairo graphics devices.UsageCairoFonts(regular="Helvetica:style=Regular",bold="Helvetica:style=Bold",italic="Helvetica:style=Italic",bolditalic="Helvetica:style=Bold Italic,BoldItalic",symbol="Symbol",usePUA=TRUE)Argumentsregular character;fontconfig pattern for the’plain text’font.bold character;fontconfig pattern for the’bold face’font.italic character;fontconfig pattern for the’italic’font.bolditalic character;fontconfig pattern for the’bold italic’font.symbol character;fontconfig pattern for the’symbol’font.usePUA logical;if FALSE then symbols are using regular Unicode code points(supported by regular fonts),otherwise Private Unicode Area(PUA)of symbols is used(typically better propulated by specialized symbol fonts).R4.0.0or higher isrequired for usePUA=FALSE.CairoFonts11DetailsThis function sets the fonts for Cairo graphics devices globally;previously opened Cairo graphics devices will also use these fonts.The argument names correspond to thefive values of the graphical parameter’font’,i.e.regular is1,bold is2,italic is3,etc.For an explanation of fontconfig patterns,see CairoFontMatch.Known issues•This function is only available when the cairo graphics library is configured with FreeType and Fontcofig support.•R math symbols are supported,but require a"Symbol"font with the Adobe Symbol Encoding unless usePUA=FALSE is used(available in R4.0.0or higher only).See AlsoCairoFontMatch,Cairo,par,Examples##Not run:##The following fontconfig patterns define the free truetype fonts#available in the debian package ttf-freefont .##Freesans is very similar to HelveticaCairoFonts(regular="FreeSans:style=Medium",bold="FreeSans:style=Bold",italic="FreeSans:style=Oblique",bolditalic="FreeSans:style=BoldOblique")##End(Not run)Index∗deviceCairo,2Cairo.capabilities,5Cairo.capture,6Cairo.onSave,7Cairo.serial,8CairoFonMatch,8CairoFonts,10Cairo,2,6–8,10,11Cairo.capabilities,3,5Cairo.capture,6Cairo.onSave,7Cairo.serial,8Cairo.snapshot(Cairo.capture),6 CairoFonMatch,8CairoFontMatch,11CairoFontMatch(CairoFonMatch),8 CairoFonts,5,10,10CairoJPEG(Cairo),2CairoPDF(Cairo),2CairoPNG(Cairo),2CairoPS(Cairo),2CairoSVG(Cairo),2CairoTIFF(Cairo),2CairoWin(Cairo),2CairoX11(Cairo),2jpeg,4par,11path.expand,3pdf,3,4png,4postscript,4X11,412。
Cairo图形指南
Cairo图形指南安装Cairo要在您的项目中使用Cairo,首先需要安装它。
Cairo可以使用包管理器来安装,例如对于Python,可以使用pip安装:pip install pycairo对于其他编程语言,可以参考Cairo的官方文档中的安装指南。
创建Cairo绘图使用Cairo创建绘图首先需要创建一个Cairo表面(surface)对象。
表面对象表示了一个绘图的目标,可以是图像、窗口或PDF文档等。
在Cairo中,有几种类型的表面可供选择,包括图像表面、PDF表面、SVG 表面等。
接下来,需要创建一个Cairo上下文(context)对象。
上下文对象是进行绘图操作的实例,可以通过调用表面对象的方法来创建。
下面是一个创建图像表面和上下文对象的示例(使用Python):import cairosurface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)context = cairo.Context(surface)绘制基本形状有了上下文对象,就可以开始绘制各种基本形状,例如线条、矩形和圆。
绘制线条:context.move_to(x1, y1) # 设置起点context.line_to(x2, y2) # 设置终点context.stroke( # 绘制线条绘制矩形:context.rectangle(x, y, width, height) # 设置矩形参数context.stroke( # 绘制矩形边框绘制圆:context.arc(x, y, radius, start_angle, end_angle) # 设置圆的参数context.stroke( # 绘制圆的边框填充形状除了绘制形状的边框,还可以使用Cairo来填充形状的内部。
填充矩形:context.rectangle(x, y, width, height) # 设置矩形参数context.fill( # 填充矩形填充圆:context.arc(x, y, radius, start_angle, end_angle) # 设置圆的参数context.fill( # 填充圆字体和文本设置字体:context.select_font_face("font_family",cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)context.set_font_size(font_size)绘制文本:context.move_to(x, y) # 设置文本起点context.show_text("text") # 显示文本导出图像完成绘图后,可以将图像导出为PNG、PDF、SVG等格式。
中文CorelDRAW-12应用实践教程第10章第一节
图10.2.3 “渐变填充方式”对话框
(3)单击“确定”按钮,填充绘制的矩形对象,如图 10.2.4所示。
(4)在工具栏中单击“导入”按钮 ,弹出“导入” 对话框,从中选择需要导入的道路图片,单击“导入”按 钮,鼠标指针变为黑色角形符号,在绘图页面中单击可导 入所选的图片,使用挑选工具调整图片的大小与位置,如 图10.2.5所示。
图10.1.10 制作文字的阴影效果
(10)按“Ctrl+I”键,弹出“导入”对话框,从中选择 手机图片,单击“导入”按钮,可将所选的手机图片导入到 绘图页面中,使用挑选工具调整图片的大小与位置,如图 10.1.11所示。
图10.1.11 调整手机图片的大小与位置
(11)单击工具箱中的“椭圆工具”按钮 ,并在属 性栏中单击“弧形”按钮 ,在绘图区中拖动鼠标绘制弧 形对象,如图10.1.12所示。
(18)单击工具箱中的“文本工具”按钮 ,在属性栏 中设置字体与字号,在绘图区中输入文字,如图10.1.20所示。
图10.1.20 输入文字
(19)使用文字工具调整输入文字的位置,如图 10.1.21所示。
图10.1.21 使用文字工具调整文字的位置
(20)单击工具箱中的“矩形工具”按钮 ,在绘图 页面的右下角拖动鼠标绘制矩形对象,在调色板中单击橘 黄色色块,将矩形对象填充为橘黄色,如图10.1.22所示。
图10.1.14 制作沿路径排列的文字
(14)在属性栏中设置文字沿路径排列的参数,如图 10.1.15所示,调整文字在路径上的排放位置后,效果如图 10.1.16所示。
图10.1.15 设置文字沿路径排列的参数
图10.1.16 调整后的排放效果
(15)使用挑选工具选择沿路径排列的文字,选择菜 单栏中的“排列”→“拆分”命令,可拆文字与路径。 选择拆分后的文字,在调色板中单击红色色块,改变文字 的颜色为红色,再选择弧形对象,在调色板中的蓝色色块 上单击鼠标右键,可填充轮廓线为蓝色,如图10.1.17所示。
平面设计-CorelDraw10新版课程教学培训经典教材共43页word资料
CorelDraw10新版课程教学封面设计内容简介:CorelDraw10是Corel公司出品的最新版本的矢量图形制作工具软件,这个图形工具给设计师提供了矢量动画、网页设计、网站制作、位图编辑和网页动画等多种功能。
将极大的提高专业设计人员的生产力,对毫无基础的初学者来说是一本难得的学习辅助教材。
本软件无论是对于创作印刷、网站还是跨媒体的优秀作品,CorelDraw10的卓越的功能都讲鼓舞设计家的创造力,它性能稳定,可以与现有的工作流程完美的结合在一起。
本教程主要是如何应用CorelDraw的功能来设计与创作精彩的综合实例,循序渐进的学习,基本流程如:艺术字体、图形制作、图形设计、综合设计等方面(例如广告设计、VI设计、CI策划、包装设计等多方面制作)。
并且要求注重“实际应用”,注重“目标导向”,在讲软件功能的同时,随时结合一些基础也很精彩的小例子,或者讲解一些综合实例,比如:照片的处理、广告招贴、网页特效、人物画像等等。
好了,介绍了这么多,还是亲自去体现它的强大之处吧。
目录:第一章:认识CorelDraw10基本工具的使用1.界面认识12.基本工具23.基本工具34.基本工具45.基本操作5第二章:图形的绘制与编辑1.编辑几何图形2.控制绘图曲线3.标注与尺寸第三章:对象的操作与管理1.对象的变换2.对象的编辑3.对象的组织第四章:轮廓线与填充效果1.编辑轮廓线2.颜色填充3.特殊填充第五章:文本处理1.文本处理基础2.制作文本效果第六章:应用特殊效果1.调和效果2.变形与封套效果3.立体画效果第七章:应用特殊效果1.阴影效果2.透明效果3.透镜效果第八章:应用特殊效果1.透视效果2.图框效果3.综合练习正文:第一章认识CorelDraw工具的使用1.1界面认识(一)Corel Draw基本新建图基本界面1-11.1.1常用工具栏:在常用工具栏中放置了最常用的一些功能选项并通过命令按钮的形式表现出来。
19702-图形编程模块使用手册(辅助模块库)-328
Risk of electrical shock: Indicates information that Potential shock hazard where HAZARDOUS LIVE voltages greater than 30V RMS, 42.4V peak, or 60V DC may be accessible.
AdvanTrol-Pro2.65 软件
图形编程模块使用手册
(辅助模块库)
浙江中控技术股份有限公司
声明
严禁转载本手册的部分或全部内容。 在不经预告和联系的情况下,本手册的内容有可能发生变更,请谅解。 本手册所记载的内容,不排除有误记或遗漏的可能性。如对本手册内容有疑问,请与
我公司联系。
文档标志符定义
警告:标示有可能导致人身伤亡或设备损坏的信息。
WARNING: Indicates information that a potentially hazardous situation which, if not avoided, could result in serious injury or death.
1.3.1 基本说明............................................................................................................................... 9 1.3.2 偏差处理............................................................................................................................. 13 1.3.3 PID 计算 .............................................................................................................................. 13 1.3.4 输出处理............................................................................................................................. 14 1.4 扩展串级控制模块(CSCEX) ................................................................................................... 15 1.5 二位式二状态控制模块(DGAP2) ........................................................................................... 18 1.6 二位式三状态控制模块(DGAP3) ........................................................................................... 18 1.7 误差 PID 运算模块(EPID)....................................................................................................... 20 1.8 扩展 PID(SPID)模块 .................................................................................................................. 21 1.9 闪光模块(FLASH) ................................................................................................................... 25 1.10 积分(限幅)模块(INTEG) .................................................................................................. 26 1.11 积分(不限幅)模块 .................................................................................................................. 27 1.12 闭锁型偏差 PID 模块(LEPID) .............................................................................................. 28 1.13 限定或模块(LIMITOR) ......................................................................................................... 29 1.14 无扰动切换模块(NBSWITCH) ............................................................................................. 30 1.15 斜坡信号发生器模块(RAMP_GNT)..................................................................................... 31 1.16 三选一模块(THOSEL)........................................................................................................... 32 1.17 三位开关控制模块(THREEPOSITION) ............................................................................... 33 1.18 二位开关控制模块(TWOPOSITION)................................................................................... 36 1.19 二选一模块(TWOSEL).......................................................................................................... 37 1.20 自整定功能块 STC...................................................................................................................... 38 1.21 预测函数控制模块(PFC)....................................................................................................... 41 1.22 一阶加纯滞后模块(FODEL) ................................................................................................. 44 2 通讯辅助函数........................................................................................................................................... 45 2.1 GETBIT 模块.................................................................................................................................. 45 2.2 GETFLOAT 模块.....................................................................................................................D HAZARD: Indicates information that Danger of an electro-static discharge to which equipment may be sensitive. Observe precautions for handling electrostatic sensitive devices
Cairo图形指南
Cairo图形指南(2)分类:cairo 2D矢量图形库2011-05-20 14:44 68人阅读评论(0) 收藏举报Cairo 概念本文讲述Cairo 图形库中一些有用的定义/概念,理解它们可以帮助你更好的理解Cairo 绘图模型。
环境(Context)使用Cairo 绘图,必须要首先创建Cairo 环境(Context)。
Cairo 环境保存着所有的图形状态参数,这些参数描述了图形的构成,譬如线条宽度、颜色、要绘制的外观(Surface) 以及其它一些信息。
Cairo 环境允许真正的绘图函数使用很少的一部分参数,以此提高接口的易用性。
调用gdk_cairo_create () 函数可为所绘制的图形创建一个Cairo 环境。
cairo_t * cr;cr = gdk_cairo_create ( widget->window) ;这两行代码创建了一个Cairo 环境,并且这个Cairo 环境是关联到GdkDrawable 对象上的。
cairo_t 结构体包含了当前渲染设备的状态,也包含了所绘制图形的坐标。
从技术上来讲,cairo_t 就是所谓的Cairo 环境。
Cairo 所有的绘图函数都要去操作cairo_t 对象。
一个Cairo 环境可以被关联到一种特定的外观,譬如pdf、svg、png、GdkDrawable 等。
GDK 没有对Cairo API 进行封装,它只允许创建一个可基于GdkDrawable 对象绘制图形的Cairo 环境。
有一些GDK 函数可以将GDK 的矩形或填充区域转换为Cairo Path (路径),然后使用Cairo 绘图与渲染。
路径(Path)一条Path(路径)通常是由一条或多条首尾相接的直线段构成的,也可以由直线段与曲线段构成。
路径可分为Open(开放)类型与Closed (闭合)类型,前者的首尾端点不重合,后者的首尾端点重合。
在Cairo 中,绘图要从一条空路径开始,首先定义一条路径,然后通过绘制/填充操作使之可见。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Cairo 图形指南 (10) —— 文本 本篇讲述如何处理文本。
灵魂伙伴第一个示例是在 GTK+ 窗口中显示《灵魂伙伴》的部分歌词。
?1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 #include <cairo.h>#include <gtk/gtk.h>static gbooleanon_expose_event(GtkWidget *widget,GdkEventExpose *event,gpointer data){cairo_t *cr;cr = gdk_cairo_create(widget->window);cairo_set_source_rgb(cr, 0.1, 0.1, 0.1);cairo_select_font_face(cr, "Purisa",CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD);cairo_set_font_size(cr, 13);cairo_move_to(cr, 20, 30);cairo_show_text(cr, "Most relationships seem so transitory"); cairo_move_to(cr, 20, 60);cairo_show_text(cr, "They're all good but not the permanent one");cairo_move_to(cr, 20, 120);cairo_show_text(cr, "Who doesn't long for someone to hold");cairo_move_to(cr, 20, 150);cairo_show_text(cr, "Who knows how to love you without being told"); cairo_move_to(cr, 20, 180);cairo_show_text(cr, "Somebody tell me why I'm on my own"); cairo_move_to(cr, 20, 210);35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 cairo_show_text(cr, "If there's a soulmate for everyone");cairo_destroy(cr);return FALSE;}int main (int argc, 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), 420, 250); gtk_window_set_title(GTK_WINDOW(window), "Soulmate");gtk_widget_set_app_paintable(window, TRUE);gtk_widget_show_all(window);gtk_main();return 0;}在这个示例中,显示了 Natasha Bedingfield 的《灵魂伙伴》的部分歌词。
(在这里,可以听这首歌,很美妙) ?1 2 3 cairo_select_font_face(cr, "Purisa",CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD);这里设置字体。
这个函数接受了三个字体参数的传入,字体的名称、样式与轻重。
1 c airo_set_font_size(cr, 13);这里设定字号。
1 2 cairo_move_to(cr, 20, 30);cairo_show_text(cr, "Most relationships seem so transitory"); 通过在窗口中指定位置并调用 cairo_show_text() 函数显示文本。
一个字接一个字……这种效果就是一个字一个字的显示,这些字的绘制存有时间差。
1 2 3 4 5 6 7 8 9 10 11 #include <cairo.h>#include <gtk/gtk.h>gpointer text[7] = { "Z", "e", "t", "C", "o", "d", "e" };gboolean timer = TRUE;static gbooleanon_expose_event(GtkWidget *widget,GdkEventExpose *event,gpointer data)12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 {cairo_t *cr;cairo_text_extents_t extents;static gint count = 0;cr = gdk_cairo_create(widget->window);cairo_select_font_face(cr, "Courier",CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD);cairo_set_font_size(cr, 35);cairo_set_source_rgb(cr, 0.2, 0.2, 0.2);gint i;gint x = 0;for (i = 0; i < count; i++) {cairo_text_extents(cr, text[i], &extents);x += extents.width + 2;cairo_move_to(cr, x + 30, 50);cairo_show_text(cr, text[i]);}count++;if (count == 8) {timer = FALSE;count = 0;}cairo_destroy(cr);return FALSE;}static gbooleantime_handler (GtkWidget *widget){if (widget->window == NULL) return FALSE;if (!timer) return FALSE;gtk_widget_queue_draw(widget);56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 return TRUE;}int main (int argc, 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), 300, 90); gtk_window_set_title(GTK_WINDOW(window), "ZetCode");gtk_widget_set_app_paintable(window, TRUE);g_timeout_add(1000, (GSourceFunc) time_handler, (gpointer) window);gtk_widget_show_all(window);gtk_main();return 0;}在这个示例中,我们在 GTK+ 窗口中画了“ZetCode”这个字串,并让逐个字母伴随一定的时间差逐一显示。
1 g pointer text[7] = { "Z", "e", "t", "C", "o", "d", "e" };构造一个字符数组。
1 2 3 cairo_select_font_face(cr, "Courier",CAIRO_FONT_SLANT_NORMAL,CAIRO_FONT_WEIGHT_BOLD);将字体设置为 Courier 。