- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我觉得我可能会错过 Pango 的一些东西。 API 中的几乎所有内容似乎都适合显示静态文本,除了在特定位置绘制/移动光标的两个函数除外,这表明可能有一种内置的方式来实现编辑文本。
例如,要用鼠标标记一段文本(即更改两点之间的背景颜色),我可以为每次鼠标移动重新生成带有更改标签的文本,或者在 Cairo 中绘制矩形,然后使用 Pango在顶部绘制具有透明背景的文本。有没有一种方法可以在不重新生成或重新绘制整个屏幕的情况下将属性应用于范围?
同样,如果我让 Pango 绘制光标并自己处理按键事件,是否有替代方法来重绘整个屏幕?
GtkTextBuffer 不是一个选项 - 我在任何时候都没有所有的文本,并且使用紧凑的二进制格式并使用一组不断变化的过滤器来计算需要动态显示的内容要高效得多。除了臃肿、冗余和不雅之外,它的速度也非常慢。
最佳答案
除了最稀疏的文档之外,没有任何文档,我检查了 GtkTextView 的源代码(https://git.gnome.org/browse/gtk+/tree/gtk/gtktextview.c)以了解 pango 布局在 GTK 本身中是如何使用的。
每次按下键或鼠标更改标记区域时渲染窗口似乎是其最小的问题,优化(虽然不如 GTK 灵活)超出了它们的用途。
例如,文本标记涉及将标签插入渲染树、重新计算树,然后对输出进行双缓冲——这应该是大材小用并保留用于 3d 渲染。通过抓取输出图像然后渲染文本的子部分来加快滚动速度。
我认为彻底的解决方案是重新设计 GtkTextBuffer/GtkTextView 以更符合 MVC 模型并且不需要预先提供全文,但现在我想我会坚持对用户绘制的小幅优化小部件。
关于c++ - Pango/Cairo 中的动态文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30040954/
过去我在学习 Cairo 时拍过一些照片,但总是继续支持其他一些图形库。我的问题是我找不到一个很好的教程来为我的表面提供一个简单的显示。我总是在 GTK 或 QT 文档中挖掘与我想做的事情无关的事情。
我的看法 @api_view(['GET']) @renderer_classes((JSONRenderer,TemplateHTMLRenderer,BrowsableAPIRendere
这听起来很简单,但我找不到将 PDF 加载到开罗的方法。我希望能够以与 cairo.ImageSurface.create_from_png 相同的方式执行 cairo.PDFSurface.crea
我在让 Pango Cairo 自动换行时遇到问题。下面是一些演示代码。我将布局的宽度设置为与红色矩形相同,因此我希望它环绕到红色矩形。实际上,它只是在每一行上放置一个单词,就好像宽度设置得很小一样。
这是我的观点: from django.conf import settings from django.http import HttpResponse from django.template.l
我想在 linux (fedora 12) 下使用 GTK 3 创建一个窗口,并使用 cairo-gl 后端在其上绘制一个简单的矩形,为此我想创建一个 cairo-gl 表面。我该怎么做,任何人都可以
我正在尝试从线程绘制到 cairo 图像表面,但出现断言错误: gtk_mt: /build/buildd/cairo-1.10.2/src/cairo-surface.c:385: _cairo_s
我收到 OSError: dlopen() failed to load a library: cairo / cairo-2在新安装后尝试执行 Django 时。使用 Windows。 根据完整的跟
我正在运行 OSX Lion 并尝试为 goocanvas 导入 python 模块, 使用 python2.7. 我设法成功编译了 pygoocanvas-0.14.1,但是当我尝试通过 pytho
我正在使用 Stack 和 Nix 构建一个 Haskell 项目,并依赖于来自 Hackage 的 cairo 库。 当我构建项目时,出现错误:无法找到 pkg-config >= 0.9.0 或
我是开罗的新手,我已经阅读了其网站上的教程/文档。 现在我可以制作线条、矩形,基本上我可以渲染图像但不能渲染文本。 我正在使用以下代码 cairo_select_font_face (cr, "mon
根据cairo example code ,以下代码 double x=25.6, y=128.0; double x1=102.4, y1=230.4, x2=153.6, y2=2
我在两个位置安装了 python,在操作系统中默认为 2.6.6,在/usr/local/bin/python2.7 中为 2.7。 我已经使用 configure/make/make install
我希望我在开罗的文本遵循绘制的路径。类似于 this . 现在这个链接来自a post在声称已经对此进行编码的开罗邮件列表中。只有代码链接位于 svn.gnome.org这似乎已被撤下。我的问题是,有
我正在尝试学习如何使用 Cairo 2D drawing library与 xlib 曲面。 我编写了一个允许创建多个窗口的小测试程序。每个函数可能有一个自定义的paint()函数,定期调用该函数以向
如果我们不检查 cairo 上下文是否存在会发生什么,如果返回 false 会发生什么,例如: bool MyClass::on_draw(const Cairo::RefPtr& cr) {
我在尝试运行以下命令时不断收到此错误: python -m weasyprint http://weasyprint.org weasyprint.pdf 错误: raise OSError("d
我有一个简单的 Cairo 程序,它试图在 600x600 PNG 中绘制由点组成的对角线。但是,每当我尝试使用对 cairo_stroke() 的一次调用来渲染所有点时,输出似乎被截断了。 具体来说
我有一个 cairo_t cr,我可以用它来使用 cairo。我想尝试在这个 cairo 图形上创建一个突出显示效果,它应该执行以下操作之一: 调亮整个图像,使其看起来更亮一些 将背景,即图像的透明部
我正在使用 C++ 和 GTK3 开发一个应用程序,但我被卡住了。我用 glade 创建了一个可视化应用程序,它具有三列,其中一列(中间一列)是 DrawingArea。在那个 DrawingArea
我是一名优秀的程序员,十分优秀!