- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我不想用pyCairo
填充多边形,但我希望某些区域不填充。例如,我想制作这样的东西:
灰色背景是 SVG 查看器的背景,因此代表图像的透明部分。
我尝试使用此代码:
import cairo
cairo.FILL_RULE_EVEN_ODD
svg_file_pointer = open('CairoPoly.svg', 'wb')
shape_container = cairo.SVGSurface(svg_file_pointer, 500, 500)
shape_description = cairo.Context(shape_container)
shape_description.rectangle(0, 0, 500, 500)
shape_description.clip_preserve()
shape_description.stroke()
shape_description.set_line_width(1)
shape_description.set_source_rgb(20/51, 0, 0)
for r in ((100, 100, 400, 400), (200, 200, 350, 300), (150, 110, 190, 390)):
shape_description.move_to(r[0], r[1])
shape_description.line_to(r[0], r[3])
shape_description.line_to(r[2], r[3])
shape_description.line_to(r[2], r[1])
shape_description.line_to(r[0], r[1])
shape_description.close_path()
shape_description.fill()
shape_container.finish()
svg_file_pointer.close()
del shape_container
但是这不起作用。这可以用 pyCairo 完成吗?如果可以,怎么做?
最佳答案
我不熟悉 pyCairo,但从 SVG 的角度来看,您所做的基本思想是正确的。你很接近,但不太正确。
您想要做的是为每个矩形创建一个带有子路径的路径。
<svg width="500" height="500">
<path d="M 100,100 L 100,400 L 400,400 L 400,100 L 100,100
M 200,200 L 200,300 L 350,300 L 350,200 L 200,200
M 150,110 L 150,390 L 190,390 L 190,110 L 150,110 Z"
fill-rule="evenodd" />
</svg>
看起来这或多或少是您正在做的事情,但您还需要将填充规则更改为“evenodd”。默认的“非零”将导致您的“漏洞”被填充,而不是留下漏洞。
set_fill_rule(cairo.FILL_RULE_EVEN_ODD)
关于python - 使用 pyCairo 填充带有多个孔的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32821156/
我正在努力在矩形 png 背景上画一个圆圈。每当我尝试画一个圆时,它都会根据我的图像比例进行拉伸(stretch)——使其成为椭圆而不是圆。 设置如下: #set background image s
我需要画一条有向线或箭头。 context.move_to (10,10)context.line_to(10,100) 这提供了一条无向线,但我需要一个箭头。我如何在 pycairo 中完成此操作?
基于问题Create PDF with (resized) PNG images using Pycairo - rescaling Surface issue我试图创建重新缩放图像并将图像放置在特定
我正在使用 Pango + Cairo(通过 GObject)用 python3.7 渲染文本,并且想通过创建一个属性并将该属性附加到我的 pango 布局来设置字母间距。 在 pango 的 gno
我正在使用 curve_to 与 pycairo 进行绘图,代码如下: ctx.move_to(0.4,0.8) ctx.curve_to(0.3,0.4 ,0.4,0.4 ,0.4,0.4) ctx
我知道可以将 PyCairo 表面放置在 Gtk 绘图区域内。但我认为 Qt 更好用,所以我一直想知道是否有办法将 PyCairo 表面放置在某些 Qt 组件中? 最佳答案 众所周知,Qt 自己的基于
我正在学习使用Pycairo到目前为止我做得很好,我可以绘制直线/贝塞尔曲线,很快,数学曲线,我试图将点表示为一条非常小的线,但它不起作用 我也尝试过 context.move_to(5,5) con
我不想用pyCairo填充多边形,但我希望某些区域不填充。例如,我想制作这样的东西: 灰色背景是 SVG 查看器的背景,因此代表图像的透明部分。 我尝试使用此代码: import cairo cair
我无法理解如何使用 pyCairo 简单地旋转图像... 这是我根据 this example 所做的: image_surface = cairo.ImageSurface.create_from_
社区。 我知道这里有很多答案、手册、教程和 Internet 上的引用资料,还有关于这个问题的更多信息。我也知道需要线性代数知识。但是,当我想到有时间弄清楚所有理论并在实践中解决练习时 - 我的头都炸
我希望能够使用 Cairo 在 Python 中直接绘制到根窗口。我已经在全屏窗口上测试了我的代码绘图,所以我知道这不是问题所在。但是,当我尝试像这样直接绘制到根窗口时: root = gtk.gdk
所以我有venv,我想使用还没有安装的pycairo模块 (venv) command$ python -m pip install pycairo Collecting pycairo Usin
这是我的代码: import cairoimport osfrom PIL import Imageimagesize = (512,128)surface = cairo.ImageSurface(
这是我的代码: import cairoimport osfrom PIL import Imageimagesize = (512,128)surface = cairo.ImageSurface(
我正在尝试安装 sdaps,但是当我运行 setup.py install 命令时,出现以下错误: kashif@crunchbang:~/sdaps-1.0.5$ python setup.py i
我正在创建一个使用 Cairo 在图像上显示文本等的应用程序。 有没有一种方法可以在不修改高度的情况下更改文本宽度?我已经可以根据宽度缩放字体大小。 一种管理方式tracking & kearning
当我在 osx 上使用 easy_install 安装 pycairo 时,出现以下错误消息: Searching for pycairo Reading http://pypi.python.org
我看到这里有一个关于类似问题的老问题: How do you install PyCairo (Cairo for Python) on Windows? 因为它是 2012 年的,我想它已经过时了。
我需要 pyCairo 做的是: 生成一个大小为 100x100 的图像,其中包含一些文本和来自文件系统的图像作为背景 文本应位于文本环绕大小为 20x20 且左下角位于 (40,40) 的框中。 保
我正在尝试安装 pycairo (cairo graphics library 的 Python 绑定(bind))在 OSX 下。 我开始了 easy_install pycairo 得到: Req
我是一名优秀的程序员,十分优秀!