沿路径绘图图像邮票与开罗

时间:2015-01-30 16:49:49

标签: cairo

作为我最初研究的一部分,看看使用Cairo是否适合我们,我想看看我是否可以在路径起点的给定距离处获得(x,y)点。我查看了开罗的例子和API,但我没有发现任何暗示这是可能的。如果我们必须从头开始构建我们自己的Bezier路径实现,那将是一种痛苦。

在android上有一个名为PathMeasure的类。这允许在距路径起点的给定距离处获得(x,y)点。这使我能够在想要的距离处轻松地绘制图章,从而能够生成如下图所示的图像。 enter image description here

希望有人能指出我正确的方向。

1 个答案:

答案 0 :(得分:0)

除非我对“路径”的含义有不完全的理解,否则您似乎可以从this guide开始完成任务。您将使用多个cr(图像位置,旋转,缩放)和一个image实例。

从我的图像中可以理解,你需要使用混合(例如alpha通道),我会说逐像素地设置与原始灰度值成比例/相同的alpha通道(透明度),以及所有RGB像素值都为黑色(0)。

直接对你的输入图像进行操作(在你要加载的文件上),通过谷歌搜索“将灰度图像转换为alpha”我发现了Photoshop的一些结果,一些用于gimp,我不知道你有什么可用的。

否则,您必须直接在代码中访问图像像素。要读取/编辑像素值,您可以使用cairo_image_surface_get_data。首先,您必须使用cairo_image_surface_create创建目标图像 使用格式CAIRO_FORMAT_ARGB32

同样,您可以使用cairo_mask绘制图像大小的黑色矩形,然后从原始图像创建格式为CAIRO_FORMAT_A8的Alpha通道图像(再次,逐像素地访问)鉴于cairo_image_surface_create_from_png)的限制,唯一可行的方法。

使用cairo_paint_with_alpha代替cairo_paint是不合适的,因为alpha通道对于整个图像来说是不变的。