pango - 使用 pango_layout 时带空格的文本拆分为新行
问题描述
我是嵌入式 Linux 的新手。我正在尝试显示字符串文本不同的对齐方式。但是当我使用 Pango 时。对于其中没有空格字符的单个单词,它正确对齐。但是我的一些字符串包含用于分隔单词的空格。但是在使用 pango_layout 时它与新行对齐。我正在使用 GCC 作为编译器在 Ubuntu 中运行我的应用程序,并且系统包含目录显示 pongo-1.0。
我的代码如下
pLayOut = pango_cairo_create_layout(pCntxt);
pango_layout_set_text(pLayOut, "Sample text #1", -1);
desc = pango_font_description_from_string(font);
pango_layout_set_font_description(pLayOut, desc);
pango_font_description_free(desc);
cairo_set_source_rgb(pCntxt, rgbRed,rgbGreen, rgbBlue);
//Set width of the layout to align correctly
cairo_text_extents(pCntxt, "Sample text #1", &extents);
pango_layout_set_width(pLayOut, extents.width);
cairo_move_to(pCntxt, pPar->tpUlX, pPar->tpUlY);
pango_layout_set_alignment(pLayOut, pPar->tpAlign);
pango_cairo_update_layout(pCntxt, pLayOut);
pango_cairo_show_layout(pCntxt, pLayOut);
左对齐的输出
Sample
text
#1
右对齐的输出
Sample
text
#1
如何使用 Pango 布局将其绘制在一行中?我在 Pango 布局中尝试了其他几个选项,但没有运气
我想要这样的文字
Sample text #1//Using left align
Sample text #1 //Using right align
X,Y location here
解决方案
在编辑中,您将此添加到您的问题中:
我想要这样的文字
Sample text #1//Using left align Sample text #1 //Using right align X,Y location here
这不是开罗的对齐方式。想象一张纸,上面写着“你好”。左对齐意味着这写在纸的左边缘附近。右对齐是指右边缘。
作为“图像”,其中|
指的是纸张的边缘:
| Hello |
| Hello |
更具技术性:左边缘由 X/Y 位置指定。右边缘是相对于宽度指定的。因此,左边缘在 处x
,右边缘在 处x+width
。
要执行您要求的正确对齐方式,您必须自己计算正确的位置。你可以用pango_layout_get_pixel_extents()
. 您需要逻辑范围(第二个参数)。然后,您想在 x 位置绘制文本x-width
。这应该会产生您正在寻找的对齐方式。
推荐阅读
- c++ - 用于对项目进行分组并将单个项目映射到其他组成员的数据结构
- sql - 解析字符串中间的文本 - SQL Server
- android - 发生异常时测试 Android 应用行为
- go - 如何将已经存在的 golang 项目从 go 路径迁移到 go 模块
- angular - 意外的指令“MatCard”导入了 Angular Material 8 错误——
- android - Android Webview contentHeight 具有上次访问页面的值
- javascript - 为什么我在我的 React 应用程序中丢失了登录信息?
- node.js - 在我的测试用例中,我的 console.log 没有输出
- amazon-web-services - Flink - AWS 上的外部检查点
- r - 在 ggplot 中突出显示我的一个折线图