使用模式生成时访问cairo_path_t

如何解决使用模式生成时访问cairo_path_t

在开罗绘制各种路径时,我很有趣。然后,通过cairo_path_t和cairo_path_data_t访问这些路径以供Pango使用。当我使用模式时,这成为一个问题。例如,以下代码效果很好。

cairo_surface_t* pat_surf = cairo_image_surface_create(CAIRO_FORMAT_ARGB32,2 * 500,1000);
    cairo_t* pat;

    if (pat_surf)
        pat = cairo_create(pat_surf);

cairo_translate(pat,amp,line_width);
cairo_move_to(pat,0);
cairo_line_to(pat,500,500);
cairo_translate(pat,-500,0);

我可以使用pat访问路径。但是,如果我将其用作重复模式。路径丢失了。

cr = cairo_create(result_surface);
cairo_pattern_t* pattern1 = cairo_pattern_create_for_surface(pat_surf);
    cairo_pattern_set_extend(pattern1,CAIRO_EXTEND_REPEAT);
    cairo_translate(cr,200,400);
    cairo_set_source(cr,pattern1);
    cairo_translate(cr,-200,-400);

我无法使用cr访问任何路径。作为测试,如果我添加一个矩形来定义窗口,则仅窗口路径可见。重复的图案消失了。

cairo_rectangle(cr,1000,400);

知道我在做什么错吗?

解决方法

cairo_path_t 用于表示路径。但是,您的代码包含以下行:

cairo_set_source(cr,pattern1);

源与路径不同。因此,当然改变源并不会改变路径。

有点不同:

  • 源定义了用于绘图的“颜色”,其中“颜色”用引号括起来,因为它也可以是渐变甚至整个表面。
  • 路径定义了源的哪些部分用于绘图。

请参阅 https://www.cairographics.org/tutorial/#L3sourcehttps://www.cairographics.org/tutorial/#L3path(可能还有整个教程,因为我链接到的部分有点密集)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?