问题标签 [cairo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 用开罗图形绘制多个矩形
我正在尝试编写一个开罗程序来将整个图像填充为黑色,然后在其中绘制另一个矩形以不同的颜色。最后,我将把它做成一个程序,生成一个看起来像数字时钟的当前时间的 .png。现在,这就是我要挂断电话的地方。
这是我的代码:
问题在于这段代码它绘制矩形以占据整个图像,而从 printf 中它应该只占据一小部分。有谁知道我怎样才能让这个矩形显示为正确的大小?
c++ - Cario 的文本区域:OpenGL
是否有现成的 textarea 类使用 Cario(以 OpenGL 为目标)作为渲染器?
通过文本区域,我的意思是具有自动换行和宽度和高度约束的多行文本字段。需要使用这个类的代码是用 C++ 编写的。
python - 在 OS-X 上将 Cairo Surface 转换为 Pygame 的最快方法
我正在寻找一种在 Python 中绘制平滑动画的方法。我想使用 cairo,部分原因是我喜欢亚像素过滤,部分原因是我熟悉 API。我的第一种方法是使用 GTK.DrawingArea 作为 cairo 表面的目标。虽然绘图很快,但我找不到任何可靠的方法来将显示/缓冲与垂直同步联系起来,因此动画很不稳定且不可靠。
我的下一个方法是尝试 PyGame。使用wiki中的示例作为起点,我编写了一些简单的代码来制作各种弹跳球的动画。链接页面上的不同方法分为两类:
- 绘制到屏幕外的 cairo ImageSurface,然后使用 Numpy 将像素缓冲区转换为 Pygame 表面。
- 两个表面共享相同的内存
第一种方法的性能很差,因为转换大约需要 10 毫秒,这是我对 60 赫兹帧的大部分时间片。我在具有 2.2Ghz Core2Duo 和 Nvidia 8400 的 Macbook-pro 上运行代码。时间很大程度上取决于表面的大小,这是针对 800x800 窗口的。
第二种方法来自像素坐标的排序。cairo 和 pygame 都坚持只能使用 RGB 像素排序,不支持转换。问题是当我设置一个 pygame 表面时,它使用 BGRA 像素排序,这完全让我感到厌烦。
所以现在的问题:
- 是否可以更改 mac 上任一库使用的像素格式以相互兼容?
- 如果不可能,那么纯粹在 Python 中进行转换的最快方法是什么?
- 如果最快的 Python 方式仍然在大部分时间里占用一帧,那么我如何与一些 C 代码接口来进行转换?
- 根据 C 接口的复杂程度,使用 pygame 而不是只用 C 编写 SDL 接口有多大意义?
.
python - python中的SVG与cairo、opengl和rsvg的交互
我使用 Cairo、OpenGL 和 rsvg 渲染了一个包含大量元素的巨大 SVG 文件。我通过 rsvg 在 cairo 表面绘制 svg 并创建一个 OpenGL 纹理来绘制它。一切都很好。现在我必须与来自 SVG 的元素进行交互。例如,我想通过坐标猜测一个元素。我想改变SVG中一些路径的背景。我认为在改变背景的情况下,我可以改变 SVG DOM 并以某种方式重新渲染 SVG 的一部分。但是在命中测试元素的情况下,我完全感到尴尬。
那么,是否有一些 python 库可以与 SVG 交互?是否可以继续使用 cairo 和 rsvg,我该如何自己实施?或者有没有更好的方法在 OpenGL 中渲染 SVG 并在 python 中与之交互?我想要的只是加载 SVG,操作它的 DOM 并渲染它
python - 开罗背景和持久性?
我刚刚开始使用 pycairo,遇到了以下有趣的错误。我编写的程序创建了一个简单的 gtk 窗口,在其上绘制一个矩形,然后有一个回调在任何类型的键盘输入上绘制一条随机线。但是,似乎对于每个键盘输入,我都必须创建一个新的上下文,或者在程序接收到第一个键盘输入的那一刻(特别是在 .stroke() 行上)出现错误。错误如下,如果重要的话。'BadDrawable(无效的像素图或窗口参数)'。(详情:serial 230 error_code 9 request_code 53 minor_code 0)
谢谢你的帮助!
(更新:我在玩,我意识到以下几点:当我调整窗口大小时,所有添加的新对象都会被删除(或者至少不再出现?))
macos - 将 Macports 库链接到 XCode 应用程序
我正在尝试将我的应用程序的依赖项与应用程序一起分发。
我在我的 Snow Leopard 系统上安装了仅 64 位的 macports 包 librsvg、boost 和 cairo。当我为我的程序创建一个 .app 包时,它在没有安装 macport 和相关库的机器上不起作用,因为它们不包含在应用程序中,该应用程序在 /opt 中搜索库。
我已经尝试使用 --static 标志进行静态链接,但这会导致 libcrt0 错误。
将 MacPorts 库及其依赖项链接到适合单独分发的 OSX 应用程序的最佳方法是什么?
c++ - 在 iPhone 上使用开罗?
我正在开发一个潜在的跨平台 C++ 应用程序,对于 Windows 和 OS X,Cairo 似乎可以满足我对 2D 图形的大部分需求,并允许我在平台之间共享大量代码。在一个理想的世界中,我真的希望能够在 iPhone/iPad 应用程序中使用相同(或非常相似)的绘图代码。
我意识到这意味着在我尝试使用它之前我需要为 iPhone 编译 Cairo,但我对如何去做这件事并没有真正的想法。
如果有人能指出我正确的方向,我将不胜感激。
c++ - 用中心点和比例因子转换顶点?
我的应用程序是矢量绘图应用程序。它适用于 OpenGL。我将对其进行修改以使用 Cairo 2D 图形库。问题在于缩放。使用 openGL 相机和比例因子可以像这样工作:
鼠标位置是这样获得的:
从那里我画出三角形的 VBO。这使我可以平移和放大。鉴于 Cairo 只能基于坐标进行绘制,我如何才能在不使用变换的情况下正确缩放和平移顶点。基本上 GlOrtho 通常会设置视口,但我认为我不能在 Cairo 上做到这一点。
好吧,GlOrtho 能够更改视口矩阵而不是修改顶点,但是我怎样才能修改顶点以获得相同的结果呢?
谢谢
*给定从 ScreenToWorld 获得的顶点 P,我该如何修改它以便根据相机和比例因子对其进行缩放和平移?因为通常 OpenGL 基本上会这样做
c++ - Cairo Matrix 等同于 GlOrtho Matrix?
鉴于我做了这样的事情:
结果是:http ://www.opengl.org/sdk/docs/man/xhtml/glOrtho.xml我可以实现这样的矩阵:
http://cairographics.org/manual/cairo-matrix.html
我试过这个:
但它没有用。我怎样才能获得 GlOrtho 在开罗制作的相同矩阵?谢谢
c++ - 退出时的开罗错误消息
我目前正在使用 Cairo 进行一些测试,以替换 Visual C++ 2010 中的一些现有 GDI/GDI+ 代码,它似乎工作正常,但每次关闭我的应用程序时都会收到一条错误消息:
“CairoTest.exe 中 0x68e629dc 的第一次机会异常:0xC0000005:访问冲突读取位置 0xabababa7”
仅当我在应用程序运行时调用 cairo_paint(cr) 时才会发生此错误 - 如果我将此行注释掉,它就会消失。到目前为止,我的应用程序中唯一的开罗代码是:
谁能指出我做错了什么的方向?
就像我说的那样,代码似乎工作正常,但我不喜欢不管什么时候看到错误都继续努力。