windows下用pango, 字符的位置不对
我在位置(100, 100)绘制布局。背景色和下划线的位置是对的,但字符画到下一行去了,不知道是不是pango的bug.附件是代码和图片。核心代码如下:
case WM_PAINT: hdc = BeginPaint(hWnd, &ps); { PangoFontMap* fontmap = pango_win32_font_map_for_display (); PangoContext* context = pango_font_map_create_context (fontmap); PangoLayout* layout = pango_layout_new (context); PangoFont* font = NULL; PangoAttrList* attrList = pango_attr_list_new (); PangoAttribute* attr ; PangoFontDescription* fontDesc = pango_font_description_new (); EndPaint(hWnd, &ps); |
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
帮顶~~~
pango颜色的错误。 是pango_win32_render_layout_line 这个函数中
{
HBRUSH oldbrush;
brush = CreateSolidBrush (RGB ((bg_color.color.red + 128) >> 8,
(bg_color.color.green + 128) >> 8,
(bg_color.color.blue + 128) >> 8));
oldbrush = SelectObject (hdc, brush);
Rectangle (hdc, x + PANGO_PIXELS (x_off + logical_rect.x),
y + PANGO_PIXELS (overall_rect.y),
PANGO_PIXELS (logical_rect.width),
PANGO_PIXELS (overall_rect.height));
SelectObject (hdc, oldbrush);
DeleteObject (brush);
}
if (fg_set)
{
brush = CreateSolidBrush (RGB ((fg_color.color.red + 128) >> 8,
(fg_color.color.green + 128) >> 8,
(fg_color.color.blue + 128) >> 8));
oldfg = SelectObject (hdc, brush);
}
pango颜色的错误。 是pango_win32_render_layout_line 这个函数中
知道了,windows下文字显示是默认顶对齐的,当pango内部认为是系统用的是基线对齐,所以出现错误。
显示开头 加一个 SetTextAlign(hdc, TA_BASELINE); 就可以啦。但pango不能改变颜色,还没搞清楚