提交 9d969d52 编写于 作者: W wizardforcel

2020-06-17 10:10:09

上级 c28d8ced
......@@ -8,13 +8,13 @@
Cairo 中的绘制是通过上下文完成的。 Cairo 上下文包含所有描述绘制方式的图形状态参数。 这包括信息,例如线宽,颜色,要绘制的表面以及许多其他内容。 这允许实际的绘图函数采用较少的参数来简化界面。
使用 Cairo 进行的所有绘制始终都是对 cairo_t 对象完成的。 Cairo 上下文与特定表面相关。 PDF,SVG,PNG,GtkWindow 等。
使用 Cairo 进行的所有绘制始终都是对`cairo_t`对象完成的。 Cairo 上下文与特定表面相关。 PDF,SVG,PNG,GtkWindow 等。
## 路径
路径由一条或多条线组成。 这些线由两个或多个锚点连接。 路径可以由直线和曲线组成。 路径有两种。 打开和关闭路径。 在封闭的路径中,起点和终点相遇。 在开放路径中,起点和终点不相交。
Cairo ,我们从一条空路开始。 首先,我们定义一条路径,然后通过抚摸和填充它们使它们可见。 重要说明。 在每个`cairo_stroke()``cairo_fill()`函数调用之后,该路径将被清空。 我们必须定义一条新路径。
Cairo,我们从一条空路开始。 首先,我们定义一条路径,然后通过抚摸和填充它们使它们可见。 重要说明。 在每个`cairo_stroke()``cairo_fill()`函数调用之后,该路径将被清空。 我们必须定义一条新路径。
路径由子路径组成。
......@@ -52,6 +52,6 @@ typedef enum _cairo_surface_type {
## 图案
Cairo 图案代表在表面上绘制时的来源。 在Cairo 中,您可以从中读取图案,该图案用作绘制操作的来源或蒙版。 Cairo 中的图案可以是实心,基于表面或渐变的图案。
Cairo 图案代表在表面上绘制时的来源。 在 Cairo 中,您可以从中读取图案,该图案用作绘制操作的来源或蒙版。 Cairo 中的图案可以是实心,基于表面或渐变的图案。
在Cairo 教程的这一章中,我们给出了一些基本定义。
\ No newline at end of file
在 Cairo 教程的这一章中,我们给出了一些基本定义。
\ No newline at end of file
......@@ -52,7 +52,7 @@ cairo_t *cr;
```
在这里,我们声明一个表面和一个Cairo 上下文。
在这里,我们声明一个表面和一个 Cairo 上下文。
```
surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 390, 60);
......@@ -60,7 +60,7 @@ cr = cairo_create(surface);
```
我们创建一个表面和一个Cairo 上下文。 表面是 390x60 像素的图像。
我们创建一个表面和一个 Cairo 上下文。 表面是 390x60 像素的图像。
```
cairo_set_source_rgb(cr, 0, 0, 0);
......@@ -187,14 +187,14 @@ int main(void)
```
我们可以使用 Firefox,Opera 或 Inkscape 程序打开 svgfile.svg 文件。
我们可以使用 Firefox,Opera 或 Inkscape 程序打开`svgfile.svg`文件。
```
surface = cairo_svg_surface_create("svgfile.svg", 390, 60);
```
要在Cairo 创建 SVG 文件,我们必须使用`cairo_svg_surface_create()`函数调用来创建 svg 曲面。
要在 Cairo 创建 SVG 文件,我们必须使用`cairo_svg_surface_create()`函数调用来创建 svg 曲面。
```
cr = cairo_create(surface);
......
......@@ -2,7 +2,7 @@
> 原文: [https://zetcode.com/gfx/cairo/basicdrawing/](https://zetcode.com/gfx/cairo/basicdrawing/)
在Cairo 图形教程的这一部分中,我们将绘制一些基本图元。 我们将绘制简单的线条,使用填充和描边操作,我们将讨论破折号,线帽和线连接。
Cairo 图形教程的这一部分中,我们将绘制一些基本图元。 我们将绘制简单的线条,使用填充和描边操作,我们将讨论破折号,线帽和线连接。
## 直线
......@@ -143,7 +143,7 @@ if (event->button == 1) {
```
在单击的回调中,我们确定是单击鼠标左键还是单击鼠标右键。 如果单击鼠标左键,则将 x,y 坐标存储到数组中。
在单击的回调中,我们确定是单击鼠标左键还是单击鼠标右键。 如果单击鼠标左键,则将`x``y`坐标存储到数组中。
```
if (event->button == 3) {
......@@ -367,7 +367,7 @@ Cairo 有三种不同的线帽样式。
Figure: Square, round and butt caps
带有`CAIRO_LINE_CAP_SQUARE`上限的行的大小将不同于带有`CAIRO_LINE_CAP_BUTT`上限的行。 如果一条线的宽度为 px 宽,则带有`CAIRO_LINE_CAP_SQUARE`上限的线的宽度将恰好为 px 宽度。 开头为 width / 2 像素,结尾为 width / 2 像素。
带有`CAIRO_LINE_CAP_SQUARE`上限的行的大小将不同于带有`CAIRO_LINE_CAP_BUTT`上限的行。 如果一条线的宽度为 px 宽,则带有`CAIRO_LINE_CAP_SQUARE`上限的线的宽度将恰好为 px 宽度。 开头为`width / 2`像素,结尾为`width / 2`像素。
```
static void do_drawing(cairo_t *cr)
......@@ -487,7 +487,7 @@ cairo_stroke(cr);
```
在此代码示例中,我们绘制具有`CAIRO_LINE_JOIN_MITER`连接样式的矩形。 线宽为 14px
在此代码示例中,我们绘制具有`CAIRO_LINE_JOIN_MITER`连接样式的矩形。 线宽为`14px`
![Line joins](img/f6d9a35c05f398c3a210cb25e78ece73.jpg)
......
......@@ -2,7 +2,7 @@
> 原文: [https://zetcode.com/gfx/cairo/shapesfills/](https://zetcode.com/gfx/cairo/shapesfills/)
在Cairo 教程的这一部分中,我们将创建一些基本的和更高级的形状。 我们将用纯色,图案和渐变填充它们。 渐变将在单独的章节中介绍。
Cairo 教程的这一部分中,我们将创建一些基本的和更高级的形状。 我们将用纯色,图案和渐变填充它们。 渐变将在单独的章节中介绍。
## 基本形状
......
......@@ -2,7 +2,7 @@
> 原文: [https://zetcode.com/gfx/cairo/gradients/](https://zetcode.com/gfx/cairo/gradients/)
在Cairo 图形教程的这一部分中,我们将介绍渐变。 我们将提到线性和径向渐变。
Cairo 图形教程的这一部分中,我们将介绍渐变。 我们将提到线性和径向渐变。
在计算机图形学中,渐变是从浅到深或从一种颜色到另一种颜色的阴影的平滑混合。 在 2D 绘图程序和绘画程序中,渐变用于创建彩色背景和特殊效果以及模拟灯光和阴影。 (answers.com)
......@@ -145,7 +145,7 @@ Figure: Linear gradients
## 径向渐变
径向渐变是两个圆之间颜色或阴影的混合。 `cairo_pattern_create_radial()`函数 s 用于在Cairo 创建径向渐变。
径向渐变是两个圆之间颜色或阴影的混合。 `cairo_pattern_create_radial()`函数用于在 Cairo 创建径向渐变。
```
#include <cairo.h>
......@@ -257,4 +257,4 @@ cairo_fill(cr);
Figure: Radial gradients
在Cairo 图形教程的这一章中,我们介绍了渐变。
\ No newline at end of file
在 Cairo 图形教程的这一章中,我们介绍了渐变。
\ No newline at end of file
......@@ -158,7 +158,7 @@ draw_text(cr, widget);
```
文本的实际绘制委托给 draw_text()函数。
文本的实际绘制委托给`draw_text()`函数。
```
GtkWidget *win = gtk_widget_get_toplevel(widget);
......@@ -240,7 +240,7 @@ static gboolean time_handler(GtkWidget *widget)
```
`time_handler`调用的主要功能是定期重绘窗口。 当函数返回 FALSE 时,超时功能将停止工作。
`time_handler`调用的主要功能是定期重绘窗口。 当函数返回`FALSE`时,超时功能将停止工作。
```
g_timeout_add(14, (GSourceFunc) time_handler, (gpointer) window);
......@@ -255,7 +255,7 @@ Figure: Puff effect
## 等待演示
在此示例中,我们使用透明效果创建一个等待演示。 我们将绘制 8 条线,这些线将逐渐消失,从而产生一种错觉,即一条线在移动。 此类效果通常用于通知用户幕后正在进行繁重的任务。 一个示例是通过 Internet 流式传输视频。
在此示例中,我们使用透明效果创建一个等待演示。 我们将绘制 8 条线,这些线将逐渐消失,从而产生一种错觉,即一条线在移动。 此类效果通常用于通知用户幕后正在进行繁重的任务。 一个示例是通过互联网流式传输视频。
```
#include <cairo.h>
......@@ -404,4 +404,4 @@ g_timeout_add(100, (GSourceFunc) time_handler, (gpointer) window);
Figure: Waiting demo
在Cairo 教程的这一部分中,我们介绍了透明度。
\ No newline at end of file
在 Cairo 教程的这一部分中,我们介绍了透明度。
\ No newline at end of file
......@@ -2,7 +2,7 @@
> 原文: [https://zetcode.com/gfx/cairo/clippingmasking/](https://zetcode.com/gfx/cairo/clippingmasking/)
在Cairo 教程的这一部分中,我们将讨论剪切和遮罩。
Cairo 教程的这一部分中,我们将讨论剪切和遮罩。
## 剪裁
......@@ -347,7 +347,7 @@ int main(int argc, char *argv[])
```
盲目效应背后的想法很简单。 图像高度为 h 像素。 我们绘制高度为 1px 的 0、1、2 ...线。 每个周期,图像的一部分高 1px,直到整个图像可见为止。
盲目效应背后的想法很简单。 图像高度为`h`像素。 我们绘制高度为`1px`的 0、1、2 ... 线。 每个周期,图像的一部分高`1px`,直到整个图像可见为止。
```
struct {
......@@ -425,4 +425,4 @@ static void cleanup()
`cleanup()`功能中,我们销毁了创建的曲面。
本章涉及在Cairo 的​​剪切和遮罩。
\ No newline at end of file
本章涉及在 Cairo 的​​剪切和遮罩。
\ No newline at end of file
......@@ -91,14 +91,14 @@ cairo_matrix_init(&matrix,
```
此变换将 y 值剪切为 x 值的 0.5。
此变换将`y`值剪切为`x`值的 0.5。
```
cairo_transform(cr, &matrix);
```
我们使用 transform()方法执行变换。
我们使用`transform()`方法执行变换。
![Shearing](img/e58072bf5e47d8061f8567490deb4a92.jpg)
......@@ -128,7 +128,7 @@ static void do_drawing(cairo_t *cr)
```
我们绘制三个 90x90px 的矩形。 在其中两个上,我们执行缩放操作。
我们绘制三个`90x90px`的矩形。 在其中两个上,我们执行缩放操作。
```
cairo_scale(cr, 0.6, 0.6);
......@@ -148,7 +148,7 @@ cairo_fill(cr);
```
在这里,我们以 0.8 的系数执行另一个缩放操作。 如果看图片,我们看到第三个黄色矩形是最小的矩形。 即使我们使用了较小的比例因子。 这是因为变换操作是累加的。 实际上,第三个矩形的缩放比例为 0.528(0.6x0.8)。
在这里,我们以 0.8 的系数执行另一个缩放操作。 如果看图片,我们看到第三个黄色矩形是最小的矩形。 即使我们使用了较小的比例因子。 这是因为变换操作是累加的。 实际上,第三个矩形的缩放比例为 0.528(`0.6x0.8`)。
![Scaling](img/8bccb6e4341704e17ed5dc09b3206729.jpg)
......@@ -429,7 +429,7 @@ static gdouble delta = 0.01;
```
我们初始化三个重要变量。 角度用于旋转,比例用于缩放星形对象。 delta 变量控制星星何时生长以及何时收缩。
我们初始化三个重要变量。 角度用于旋转,比例用于缩放星形对象。 `delta`变量控制星星何时生长以及何时收缩。
```
cairo_translate(cr, width/2, height/2);
......@@ -465,4 +465,4 @@ if ( scale < 0.01 ) {
这些线控制星形对象的生长或收缩。
在Cairo 图形教程的这一部分中,我们讨论了变换。
\ No newline at end of file
在 Cairo 图形教程的这一部分中,我们讨论了变换。
\ No newline at end of file
......@@ -2,7 +2,7 @@
> 原文: [https://zetcode.com/gfx/cairo/cairotext/](https://zetcode.com/gfx/cairo/cairotext/)
在Cairo 图形教程的这一部分中,我们将处理文本。
Cairo 图形教程的这一部分中,我们将处理文本。
## 灵魂伴侣
......@@ -177,7 +177,7 @@ cairo_show_text(cr, "ZetCode");
```
第二个文本用灰色墨水绘制。 它向右和向下移动了 3px
第二个文本用灰色墨水绘制。 它向右和向下移动了`3px`
![Shaded text](img/6e39e7c9a2a487bc62938737ac25cc76.jpg)
......@@ -287,7 +287,7 @@ cairo_glyph_t glyphs[n_glyphs];
```
字形数组将存储三个整数值。 第一个值是字形到所选字体类型的索引。 第二和第三值是字形的 x,y 位置。
字形数组将存储三个整数值。 第一个值是字形到所选字体类型的索引。 第二和第三值是字形的`x``y`位置。
```
cairo_show_glyphs(cr, glyphs, n_glyphs);
......
......@@ -2,7 +2,7 @@
> 原文: [https://zetcode.com/gfx/cairo/cairoimages/](https://zetcode.com/gfx/cairo/cairoimages/)
在Cairo 图形教程的这一部分中,我们将讨论图像。 我们将展示如何在 GTK 窗口上显示图像。 我们还将用图像创建一些效果。
Cairo 图形教程的这一部分中,我们将讨论图像。 我们将展示如何在 GTK 窗口上显示图像。 我们还将用图像创建一些效果。
## 显示图像
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册