📜  PyCairo - 设置上下文颜色(1)

📅  最后修改于: 2023-12-03 15:33:49.543000             🧑  作者: Mango

PyCairo - 设置上下文颜色

在使用 PyCairo 进行绘图时,我们通常需要设置上下文的颜色。本文将介绍如何在 PyCairo 中设置上下文的颜色。

设置 RGB 颜色

RGB 是一种常见的颜色表示方法,其中 R、G、B 分别表示红、绿、蓝三个颜色分量的值。在 PyCairo 中,我们可以使用 set_source_rgb() 方法来设置上下文的颜色。该方法接受三个参数,分别是 R、G、B 三个分量的值,取值范围为 0~1。

import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
context = cairo.Context(surface)

# 设置颜色为红色
context.set_source_rgb(1, 0, 0)

# 绘制一个矩形
context.rectangle(50, 50, 100, 100)
context.fill()

surface.write_to_png('color.png')

运行该程序,将生成一个红色的矩形图片。

rgb

设置 RGBA 颜色

RGBA 是在 RGB 的基础上增加了一个 alpha 通道,表示透明度。同样地,在 PyCairo 中,我们可以使用 set_source_rgba() 方法来设置上下文的颜色。该方法接受四个参数,分别是 R、G、B、A 四个分量的值,取值范围为 0~1。

import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
context = cairo.Context(surface)

# 设置颜色为半透明的蓝色
context.set_source_rgba(0, 0, 1, 0.5)

# 绘制一个矩形
context.rectangle(50, 50, 100, 100)
context.fill()

surface.write_to_png('color.png')

运行该程序,将生成一个半透明的蓝色矩形图片。

rgba

设置渐变色

除了设置纯色之外,我们还可以设置渐变色。PyCairo 提供了多种渐变色方式,比如线性渐变、径向渐变等。

线性渐变

线性渐变表示颜色随着位置的变化而产生线性变化。在 PyCairo 中,我们可以使用 cairo.LinearGradient() 方法来创建一个线性渐变。该方法接受四个参数,分别是渐变起点的 x、y 坐标和渐变终点的 x、y 坐标,还可以指定渐变中使用的颜色。

import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
context = cairo.Context(surface)

# 创建一个线性渐变
gradient = cairo.LinearGradient(0, 0, 200, 200)
gradient.add_color_stop_rgba(0, 1, 0, 0, 1)
gradient.add_color_stop_rgba(1, 0, 0, 1, 1)

# 设置当前上下文的填充样式为线性渐变
context.set_source(gradient)

# 绘制一个矩形
context.rectangle(50, 50, 100, 100)
context.fill()

surface.write_to_png('color.png')

运行该程序,将生成一个从红色到蓝色的线性渐变矩形图片。

linear_gradient

径向渐变

径向渐变表示颜色随着距离中心点的距离变化而产生径向变化。在 PyCairo 中,我们可以使用 cairo.RadialGradient() 方法来创建一个径向渐变。该方法接受六个参数,分别是渐变中心点的 x、y 坐标,中心点颜色和半径以及边缘颜色和半径。

import cairo

surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)
context = cairo.Context(surface)

# 创建一个径向渐变
gradient = cairo.RadialGradient(100, 100, 50, 100, 100, 100)
gradient.add_color_stop_rgba(0, 1, 0, 0, 1)
gradient.add_color_stop_rgba(1, 0, 0, 1, 1)

# 设置当前上下文的填充样式为径向渐变
context.set_source(gradient)

# 绘制一个圆形
context.arc(100, 100, 50, 0, 2 * 3.14)
context.fill()

surface.write_to_png('color.png')

运行该程序,将生成一个从红色到蓝色的径向渐变圆形图片。

radial_gradient

总结

本文介绍了在 PyCairo 中设置上下文颜色的方法,包括设置 RGB 颜色、RGBA 颜色和渐变色。通过掌握这些方法,我们可以更加灵活地控制 PyCairo 中的绘图颜色。