cairo 教程四

学习提速专享!AI工具全家桶免费用 限时购周边加赠Coding Plan Lite,解锁20+主流AI工具,写代码、查资料快人一步! 阅读详情

编译可参考教程二

GTK 窗口

在这个示例中,演示如何在GTK窗口中使用Cairo绘制图形。基于GTK后端的Cairo绘图模型将贯穿于本指南。

#include<cairo.h>
#include<gtk/gtk.h>

staticgboolean
on_expose_event
(GtkWidget * widget, GdkEventExpose * event, gpointer data)
{
cairo_t *cr;

cr = gdk_cairo_create
(widget->window);

cairo_set_source_rgb
(cr, 0.627, 0, 0);
cairo_select_font_face
(cr, "AdobeHeiti Std", 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, "Iam a Chinese.");

cairo_destroy
(cr);

returnFALSE;
}


int
main
(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>

首先要包含cairogtk+库的头文件。

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);

要在GTK+窗口中绘制Cairo图形,可以使用GtkDrawingAreawidget 或者更为简单的GtkWindowwidget,本例选择GtkWindow。由GtkWindowwidget expose-event信号处理后,默认要重新绘制窗口背景,这会将我们在on_expose_event() 函数中定义的Cairo图形覆盖掉,因此需要调用gtk_widget_set_app_paintable() 函数通知GTK+不要这么干。如果是在GtkDrawingAreawidget 中绘制Cairo图形,则可省去这一步。

cairo_t*cr;

cr = gdk_cairo_create
(widget->window);

Cairo图形绘制工作是在on_expose_event() 函数中进行的,在该函数中,我们为GTK+系统创建了一个Cairo环境,并在该环境中绘制了一行文本。


cairo 教程 <!-- p {margin-bottom:0.08in} --> Cairo后端 Cairo支持多种后端,本文基于几个示例讲述如何使用Cairo各种后端创建PNG图像、PDF文件与SVG文件以及如何使用Cairo在GTK窗口中绘图。 1.PNG 图像 第一个示例(main.c)用于生成PNG图像。 #include int main ( 阅读详情

相关推荐

Cairo使用指南

Cairo是一个用于创建矢量图形的开源库,它支持多种操作系统和平台,并提供了丰富的图形绘制功能。cairo_arccairo_fill以下是Cairo库中关于画线、画圆弧、填充颜色、填充图案、颜色渐变、设置透明度以及图片淡出等功能的示例说明。

哈哈星云 2213

OSG第三方库编译之一:zlib编译(Windows、Linux、Macos环境下编译)

OSG编译;第三方库;跨平台编译;zlib编译(Windows、Linux、Macos环境下编译)

LuckyHanMo的博客 1802

cairo学习

环境: 使用cairo绘图,必须要首先创建cairo环境,cairo环境保存着所有的图形状态参数,这些参数描述了图形的构成,譬如线条宽度、颜色、要绘制的外观及其他一些信息。cairo环境允许真正的绘图函数使用很少的一部分参数,以此提高接口的易用性。调用gdk_cairo_create()函数可为所绘制的图形创建一个cairo环境。 cairo_t *cr; cr = gdk_cairo_cr

Teresa-smida的专栏 1020

linux从源码编译cairo,如何在windows下编译cairo

cairo 是一个免费的矢量绘图软件库,它可以绘制多种输出格式。cairo 支持许多平台,如 Linux、BSD、OSX等,当然,还有 Windows。cairo 官网提供了在 windows 下的编译方法,详情可戳这里。尽管它给出了看起来很详细的步骤,但在实际编译中,你有可能会遇到各种各样的问题。我们先从官网的步骤开始。下载并编译 zlib .下载并编译 libpng .安装Mozill...

weixin_39634579的博客 1072

PyGobject(九十三)Cairo系列——简介&简单示例

Cairo 安装 Cairo在PyGobject中的使用 简单示例 Cairo Cario是一个2D图形库,支持多种输出设备。 目前支持的输出目标包括X Window,Quartz,Win32,image.buffers,PostScript,PDF和SVG文件输出。 后续支持OpenGL,XCB,BeOS,OS/2操作系统和DirectFB。 Cario的目的是同一输出在不同

Yu的专栏 4554

linux从源码编译cairo,Windows 下编译 cairo 二维图形库

cairo 的简介cairo 是一个免费的矢量绘图软件库,它可以绘制多种输出格式。cairo 支持许多平台,包括 Linux、BSD、Microsoft® Windows® 和 OSX(BeOS 和 OS2 后端也正在开发)。Linux 绘图可以通过 X Window 系统、Quartz、图像缓冲格式或 OpenGL 上下文来实现。另外,cairo 还支持生成 PostScript 或 PDF 输...

weixin_26742753的博客 978

Cairo初探

关于Cairo Cairo是非常流行的开源2D图形渲染引擎库,它支持包括X-Windos,Win32,图像,pdf在内的各种输出设备。目前,Cairo已被广泛的使用在多个平台上来渲染图形界面,包括Firefox/Webkit-EFL/GTK+/Poppler等等。 编译安装Cairo 我们可以直接从Ubuntu的上下载cairo的稳定版: sudo apt-get instal

flexwang_的专栏 1万+

cairo 教程

<!-- p {margin-bottom:0.08in} --> <!-- p {margin-bottom:0.08in} --> PC平台:linux(unbutu 10.04) 示例采用C语言实现,可使用gcc编译它们,编译命令格式如下: $gcc-o example `pkg-config --cflags --libs gtk+-2.

2419

cairo 教程

http://blog.chinaunix.net/u2/60529/showart_2283310.html 目前学习至第五章,cairo的一点点总结:       1、生成环境,gdk_cairo_create(),通常是从window或drawarea生成环境。Cairo 环境保存着所有的图形状态参数,这些参数描述了图形的构成,譬如线条宽度、颜色、要绘制的外观 (Surface) 以及其

fykhlp的专栏 4816

Cairo教程

 Cairo教程 (2010-05-01 16:31) 这是翻译的cairo官网上的一篇教程,第一次认真的翻译文章,很多术语都拿捏不准,很多词语也是斟酌再三,即使这样翻译的我还是不满意。但翻译完了激情也没了,只能如此。另外:原文的代码这儿没链接,大家可以到http://cairographics.org/tutorial/去查看。 欢迎转载,但请注明出处(nketc.cublog

u012463389的博客 1万+

ubuntu Cairo图形库 环境搭建

Cairo官网:http://cairographics.org/ 根据官网指示,我使用如下语句安装好cairo库 sudo apt-get install libcairo2-dev 从官网拷贝代码(http://cairographics.org/FAQ/#compilation_flags):hello.c #include int main (int argc, c

zh19921107的专栏 9283

cairo教程

关于此后教程代码的编译,可参照教程二 <!-- p {margin-bottom:0.08in} --> 以下代码可生成PDF 文件 #include #include int main (intargc, char*argv[]) { cairo_surface_t *surface; cairo_t *cr; surface = cair

1481

cairo学习简单总结

https://www.aliyun.com/jiaocheng/55560.html 阿里云  &gt;  教程中心   &gt;  android教程  &gt;  cairo学习简单总结   cairo学习简单总结 发布时间:2018-01-18 来源:网络 上传者:用户 关键字: 简单 总结 学习 cairo 发表文章 摘要:Cairo将成为Linux2D绘图的未来内...

chengde6896383的专栏 3407

WTF-Cairo 项目教程

WTF-Cairo 项目教程 1. 项目介绍 WTF-Cairo 是一个专注于学习 Starknet Cairo 智能合约的开源项目。该项目基于 Cairo 2.2 版本,旨在帮助开发者快速掌握 Cairo 语言及其在 Starknet 上的应用。WTF-Cairo 提供了丰富的教程和代码示例,涵盖了从基础数据类型到高级智能合约开发的各个方面。 2. 项目快速启动 环境准备 在开始之前,请确保你已...

gitblog_01196的博客 959

Awesome Cairo 教程

Awesome Cairo 教程 项目介绍 Awesome Cairo 是一个精选的 Cairo 1.0 代码和资源列表,旨在为开发者提供丰富的学习材料和开发工具。Cairo 是一种用于编写可证明的智能合约的语言,特别适用于 StarkNet 网络。 项目快速启动 安装 Cairo 首先,确保你已经安装了 Cairo 的开发环境。你可以通过以下命令安装 Cairo: # 安装 Scarb curl...

gitblog_00405的博客 460

Cairo 项目使用教程

Cairo 项目使用教程 1. 项目目录结构及介绍 Cairo 项目的目录结构如下: Cairo/ ├── AUTHORS.txt ├── CONTRIBUTORS.txt ├── Makefile ├── OFL.txt ├── README.md ├── build.sh ├── requirements.txt ├── github/ │ └── workflows/ ├── fonts...

gitblog_00122的博客 904

Cairo学习(一)

Cairo 介绍 最近在看Cairo,准备做ofd生成图片。技术选型选了几天,编译过Mesa3D,但是好像不太适合。最后选择Cairo 2D绘图库,因为是在Linux下跑的,特地安装了个CentOS7编译Demo,发现可以运行。Cairo有直接绘制图片,也有渐变和矩阵转换,比较适合。 Windows编译和Linux编译参考官网:https://www.cairographics.org/download/ 绘图之前需要理解几个概念: surface(画布) context(上下文) path(路径) ma

q893332169的博客 6855

Starklings-Cairo1 教程

Starklings-Cairo1 教程 1. 项目介绍 Starklings-Cairo1 是一个交互式教程,旨在帮助用户快速上手 Cairo v1 和 Starknet。Cairo 是一种用于编写智能合约的语言,而 Starknet 是一个基于 Cairo 的区块链平台。通过 Starklings-Cairo1,用户可以通过一系列练习来学习和掌握 Cairo 和 Starknet 的基本概念和...

gitblog_00073的博客 320
上一篇: cairo教程三
下一篇: cairo 教程5
July_Yang
博客等级 码龄15年 46粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值