首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Win32下初始化Pango?

在Win32下初始化Pango需要完成以下步骤:

  1. 引入Pango库 首先,要在源代码中引入Pango库。这需要在代码文件的开头添加以下代码:#include <pango/pango.h>HWND hwndPangoWnd = CreateWindowEx( NULL, // 创建的窗口类名称 L"Pango_Demo", // 创建的窗口名称 L"Pango布局引擎示例",// 窗口描述符 WS\_VISIBLE | WS\_CLOSE | WS\_MAXIMIZEBOX | WS\_CAPTION, // 窗口风格 CW\_USEDEFAULT, // 初始X轴位置 CW\_USEDEFAULT, // 初始Y轴位置 CW\_USEDEFAULT, // 初始宽度 CW\_USEDEFAULT, // 初始高度 NULL, // 父窗口 NULL, // 子窗口 NULL, // 初始化函数指针 NULL); // 窗口初始化参数PangoLayout *layoutPango; PangoRectangle rect; PangoFontDescription *fontDesc; pangongraphics_begin_layout(hwndPangoWnd, NULL); // 绘制文本的矩形区域 layoutPango = pangongraphics_create_layout(&fontDesc); // 获取Pango Layout pangongraphics_set_layout(hwndPangoWnd, layoutPango); // 将获取的Pango Layout设置为其当前的Pango Layout pangongraphics_set_font(hwndPangoWnd, fontDesc); // 将获取的Pango Layout设置为其当前的Pango Layout pangongraphics_next_page(hwndPangoWnd);// 绘制布局 pangongraphics_end_layout(hwndPangoWnd); // 结束Pango绘制操作并保存布局 rect = pangongraphics_get_bounding_box(hwndPangoWnd); // 获取绘制的文本的矩形区域if(layoutPango) { pango_layout_unref(layoutPango); layoutPango = NULL; } if(fontDesc) { pango_font_description_free(fontDesc); fontDesc = NULL; }综上所述,在Win32下初始化Pango需要进行创建窗口、创建Pango Layout、建立Pango Layout与绘制文本、释放Pango资源等操作。通过以上的步骤,Win32下就可以成功地初始化Pango文本布局引擎了。
  2. 创建一个窗口 初始化Pango的第一步是创建一个窗口,该窗口将为其他Pango组件提供布局空间。在Win32下,可以使用窗口类WM_CLASS和WM_CREATE消息来创建一个窗口。示例代码如下:
  3. 建立Pango布局和绘制文本 现在需要将Pango库与其绘制文本的操作集成在一起。可以使用以下代码创建一个Pango Layout和获取Pango的绘制操作:
  4. 释放Pango资源 完成文字布局后,需要对Pango相关的资源进行释放,防止资源泄漏、资源浪费等问题。Pango相关的资源如Pango Layout和Pango Text等,需要正确的进行释放。以下是一些释放Pango相关资源的示例代码:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Linux如何安装使用puppeteer

    前提: 我需要用puppeteer实现抓取并下载百度图片中指定关键词的前100张图片, 程序在本地(Windows)可以正常运行, 但是部署到服务器(Linux)上 就总是报错:cannot find...诸如此类的报错,虽然知道是和puppeteer的安装有关, 但是一直没找到如何在Linux正确的安装(Windows如果使用npm安装不成功,可以使用cnpm安装), 以下是在掘金上找到的一个方法,...亲测有效,记录一。...chrome-linux.zip', mac: 'https://storage.googleapis.com/chromium-browser-snapshots/Mac/%d/chrome-mac.zip', win32...然后解压即可 ps: .local-chromium/linux-%d文件夹需要自己创建,同样将%d替换为具体编号 4、安装相关依赖(测试的时候不安装也正常运行了……) #依赖库 yum install pango.x86

    15.1K10

    杂谈 System.Drawing.Common 的跨平台性(关键词:libgdiplus .NET Core Mono Win32 Linux ……)

    经过 Mono 团队的不懈努力,原本专属于 Win32 平台的 GDI+ 终于可以跨平台了,不过这中间还有好多的故事和好多的坑。 本文带你了解 System.Drawing 命名空间的跨平台。...System.Drawing 固然强大,但它却只是 Win32 GDI+ 的一层很薄很薄的封装。...它从 API 级别就分离出 .NET Framework 中不跨平台的部分,然后把它们从 .NET 的核心仓库中移除,换成 .NET 的扩展框架( WPF / Windows Forms)。...库是 .NET Core 这层封装的实现。...引擎来替代自己的实现,可通过 –with-pango 选项开启 pango 引擎,但没实现的功能更多 其他 还有其他一些没实现的功能 可在这里看到尚未实现的功能列表 libgdiplus/TODO at

    1.8K60

    揭开Wayland的面纱(一):X Window的前生今世

    这张,便是当前X Window系统的架构图,稍微解释一: X Client:图形应用程序,Firefox、Pidgin等; X Server:你看不见的控制中心; Compositor:合成桌面系统...,Compiz; Kernel/KMS/evdev:这便是Linux Kernel,后面会提到KMS技术了,其中还有一项evdev,是管理输入设备的。...在Cairo之上,还有文字排版库:Pango,同样很明显的,处理文字排版,都不会用XFont之类的东西了,而是直接用Pango画。当然Pango也是跨平台的。...尽管在Linux平台下,Cairo、Pango的发挥依然是基于X Window的,但X Window充其量仅仅是一个"backend"而已,并不是少它不行。...很少关心桌面图形的Linux内核,在当时引入了"内核级"的模式设置,也就是说,在内核载入完毕、显示驱动初始化后很短的时间内,即设置好标准的分辨率和色深,通过在X层做相应的更改,从此X的初始化就可以省去"

    4.6K80

    win32 api函数_c调用webapi接口

    前言 如果要在Windows上面写程序,就不得不了解一些 Win32Api 的使用,Win32 Api 在 C / C++的环境中使用非常的方便,直接调用头文件 ...使用就行了,但在 C#中不会这么简单,需要在指定的模块之中导入想要的Win32,下面我们来学习一何在C#之中使用Win32 Api . . . ---- 在测试Win32 Api 之前,我先教大家如何获取有窗口的进程信息...,代码如下: 有窗口的进程,它的窗口句柄不会为 0,所以我们只需在所有运行的程序之中判断一即可,下面是效果: 这些都是我所运行有窗口的进程 . . . ---- Win32 Api 使用 首先我们准备一个额外的窗口...,用于测试 Api: 准备两个按钮,一个用于显示上面的窗口,另一个用于测试 Api: 导入 Win32 Api: User32 表示导入的 Api所在模块 CharSet 表示字符集 下面的是一个...发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    1.3K20

    百亿补贴通用H5导航栏方案

    在这样的背景,提供一个动态灵活的导航条,为产品赋能,变得尤其重要。 01 使用原生导航栏现状 在今年的敏捷团队建设中,我通过Suite执行器实现了一键自动化单元测试。...1.3 体验差 webview初始化时会预置一个默认的导航条,然后根据前端配置,再去设置导航条的不同样式,无法避免的存在一个过渡期,体验较差。...@pango/navigation-bar组件使用a标签渲染返回按钮,保证js执行异常时依然展示返回按钮,并且能正常响应返回事件。...3.2 竞品/兄弟频道相关现状 观察多个竞品以及兄弟频道,发现在上述的异常场景2、3,均未做特别处理,展示无头错误页。...8.4 挂载 import { INavigationParams, NavigationBar } from "@pango/navigation-bar"; import "@pango/navigation-bar

    25340

    【Rust日报】2020-05-18 Castor, WASM, Rust嵌套循环

    依赖库: openssl gtk+3 gdk-pixbuf pango atk cairo 编译和安装: 运行make就可以编译Castor 安装:sudo make install 运行Castorr...:详见(步骤) Windows环境编译:详见(步骤) 修改设置: 编辑~/.config/castor/settings.toml设置文件,支持用12进制,纯颜色甚至emojis!...首先我们学习一些最基本的循环,然后我们再学习一 如果在嵌套循环里中断退出和继续执行。...语言的复杂格式的循环: for i := 0; i < 10; i++ { fmt.Println(i) } Rust语言的循环没有说明iteration(i++)的每一个指针步增时候的情况, 也没有说明如何在...("{}", x); } 打印结果: 0 1 2 3 4 5 嵌套循环: 在很多编程语言,嵌套循环都非常诡异,比如,我们如何在一个嵌套循环中让外循环继续的条件建立在内循环里呢?

    83220

    WPF 通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸转换过来

    本文将告诉大家如何在 WPF 或者其他 Win32 应用里面,在收到鼠标消息时,通过 GetMessageExtraInfo 方法获取当前收到的鼠标消息是否由触摸消息提升而来 大家都知道,在不开启 WM_Pointer...的情况,无论是走 WM_Touch 或者是 RealTimeStylus 等方式,默认触摸都会提升为鼠标消息从而更好兼容应用程序的逻辑 如果此时应用程序想要根据消息循环里面接收到的 Win32 消息判断一个鼠标消息的来源是否来自于触摸框触摸屏或者是...Pen 笔等,可以通过 GetMessageExtraInfo 方法获取更多的信息 根据 GetMessageExtraInfo 方法获取到的 LPARAM 进行 Mask 一 0xFFFFFF80...值,即可通过返回的结果判断鼠标消息的来源,返回的结果是 0xFF515780 则判断是 Touch 触摸消息过来的,通过返回结果是 0xFF515700 则判断是 Pen 笔过来的 演示的代码如下...3c2d3fc41f0bca74e1c15be5d732138e0b958497 获取代码之后,进入 WegairhokawhelnaHibairdercawwe 文件夹 更多请参阅 应用程序疑难解答 - Win32

    22710

    WPF 自定义文本框输入法 IME 跟随光标

    也需要 GetTextEditorLeftTop 方法,这个方法的返回值对大部分自定义的文本框控件来说,都应该是 0,0 点 在 IMESupporter 类型构造函数,期望传入文本框控件,如此可以解决初始化值和监听的锅...打开一个 Win32Dialog 窗口, OpenFileDialog 或 SaveFileDialog 等,之后关闭,那么此时也许 ImmGetDefaultIMEWnd 将会返回空值 拿到空值,...SetFocus(IntPtr.Zero); 初始化的过程还需要给输入法的输入框一个初始化的坐标,可使用 Win32 的 ImmSetCompositionWindow 进行设置。...但是在一些 Win10 版本,通过补丁又修了这个问题 以上就完成了输入法的初始化逻辑 接下来就是需要处理 Windows 消息了,如在收到 WM_INPUTLANGCHANGE 消息时,需要重新获取输入法上下文...我的Win32输入法编程心得 文档管理器 - Win32 apps Microsoft Docs 分段 - Win32 apps Microsoft Docs 输入法编辑器 (IME) 要求 - Windows

    1.8K21

    globalalloc、malloc和new的区别

    GlobalAlloc 是为了与Win16兼容才保留的,在Win32不要使用。...但在Win32的时代这些函数已经被废弃了,现在的内存只有一种就是虚存。在Win32中所有的进程所使用的内存区域是相互隔离的,每个进程都拥有自己的地址空间。...malloc 是C运行库中的动态内存分配函数,WINDOWS程序基本不使用了,因为它比WINDOWS内存分配函数少了一些特性,,整理内存。 ...因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。 ...但在Win32的时代这些函数已经被废弃了,现在的内存只有一种就是虚存。在Win32中所有的进程所使用的内存区域是相互隔离的,每个进程都拥有自己的地址空间。

    1.6K20

    VC编程入门浅谈「建议收藏」

    对于没有编程基础的人首先要学习编程的基础知识,变量,语句,基本的算法等,然后写一些小的程序,实现些常用算法对自己的思维是很好的锻炼,对以后的学习大有好处。...注意,C++是一门语言,而VC则是讲解如何在VC环境使用MFC类库,学习VC应建立在充分了解C++的基础上的。...学完了C++,最好先找本Win32编程的书,Win32编程是指用Windows API编程,MFC是将众多的API函数进行了封装的类库,用起来方便了不少,但如果没有一些API编程基础,对相关概念不了解,...这个阶段的关键是要理解Win32程序是如何运作的,把握各种窗口间的关系。因为你以后应该很少直接用Win32 SDK编写程序,所以关键是理解整个结构,记住几个函数并没有什么意义。...这时,你也会体会到学习Win32编程的好处了。   最后,建议有时间的话研究一各种算法。数据结构是一定要看的。不一定要记住,但至少要知道有那么回事,万一碰到问题可可以知道问题出在哪里。

    98710

    通过Webrtc实现推拉流报错“未初始化网络库WSAStartup失败”问题排查分析

    进行深入的研究,在实现webrtc推拉流时,运行程序,设置会话描述,会出现如下错误:“应用程序没有调用WSAStartup,或者WSAStartup失败” image.png WSAStartup是Windows的网络编程接口软件...image.png 应用程序调用的是c++的,创建socket编程未初始化网络,导致出现创建失败。...目前我们使用的是window开发,但是Webrtc传输数据必须要通过网络来进行,所以需要初始化window网络库的服务。 此处我们在自己的程序中初始化window网络服务。...函数初始化: #ifdef _WIN32 WSADATA wData; ::WSAStartup(MAKEWORD(2, 2), &wData); #endif // _WIN32 函数析构: #ifdef..._WIN32 ::WSACleanup(); #endif // _WIN32 由于webrtc的推流直播目前仍在测试,所以如果大家想了解一些关于我们现有视频平台的相关内容,也可以联系我们,经过实践测试

    1.2K10

    何在控制台程序中监听 Windows 前台窗口的变化

    本文会介绍两类知识,一类是如何在 .NET/C# 程序中方便地调用 Win32 API,另一类是在控制台程序中开启 Windows 消息循环。...这些是我们刚刚已经用的以及即将使用的 Win32 函数和常量。...var rowText = $"[{w.Handle}] {w.Title} - {w.ProcessName}"; Console.WriteLine(rowText); } 如果更多地优化一输出的格式...,那么就可以得到下面的效果: 关于如何在控制台中输出表格(并实现中英文字符对齐显示),可以阅读我的另一篇博客。....NET/C# 程序如何在控制台/终端中以字符表格的形式输出数据 - walterlv 开源项目 本文的代码已经开源在 GitHub 上,感兴趣可以去项目中阅读更新的代码: https://github.com

    1.1K20

    Modern C++,学炸了!!

    首先来拯救一我昨天的文章《如何进入 BAT 研发部门》。...很多熟悉其他语言的同学看 C++ 的代码一般也能看的懂,然后找几个例子熟悉语法写了几行 C++ 代码,然后就产生了一个种错误:我也能写好 C++。...先总体来介绍一现代 C++ 应该学习哪些知识(同样包括但不局限于): 统一的类成员初始化语法与 std::initializer_list 注解标签(attributes) final/override...),改进或者增强了C++ 98/03标准中一些语法元素的用法(auto 关键字、统一类的初始化列表语法),新增了一些其他编程语言早已经支持的关键字和语法(final关键字、=default语法 、=...delete语法); 开始在语法和自带的标准库的层面上增加对操作系统的功能的支持(线程库、时间库)。

    3.1K10

    dotnet X11 设置窗口鼠标触摸命中穿透

    本文记录如何在 X11 应用里面,使用 XShapeCombineRegion 方法配置一个 X11 窗口支持和 Win32 窗口一样的命中测试穿透功能,即对应 Win32 的 WS_EX_TRANSPARENT...67cd9188399e7f45bfe83e1af9daf10236b3171c 获取代码之后,进入 DikalehebeekaJaqunicobo 文件夹,即可获取到源代码 以上代码经过我在 UOS 系统上测试通过,在 UOS 上的 KWin_X11 能够符合预期工作 运行代码提示找不到...destKind, int xOff, int yOff, IntPtr region, int op); 更新之后的代码放在 github 和 gitee 上,欢迎拉取代码阅读和构建 参考文档: 如何在屏幕上显示一局部透明...、鼠标点击可穿过的窗口 - V2EX 2021-08-21窗口管理器杂谈 - 简书 更多 X11 开发请参阅 博客导航 关于在 Windows 系统的 WPF 窗口点击穿透,请参阅 WPF 制作支持点击穿透的高性能的透明背景异形窗口

    15010

    先来学习一什么是WIN32API

    WIN32 API 前言 大家好,很高兴又和大家见面了!!! 在开始今天的内容前,咱们先闲聊一。...想要完成贪吃蛇游戏能够在Windows系统的运行,WIN32 API的知识点是必不可少的,因此我们会在今天的篇章中详细介绍相关的知识点。...简单的理解就是我们通过调用WIN32 API的各个函数,就能够将对应的程序在Windows32位平台正常运行。 这里要注意一定是Windows环境,对应的程序不能再Linux环境使用。...2.3 system函数 刚才上述的操作都是在Windows的控制台下完成的,那我们应该如何在VS中来调用这些指令呢?这里就需要借助C语言提供的一个库函数——system函数。...,如果最低位为1,则表示该键有被使用过,那么这个表达式的值为1,否则,这个表达式的值就为0,那么我们就可以通过三目操作符来完成这个表达式的值的表示,:GetAsyncKeyState(VK) & 1?

    14510
    领券