获取字距调整信息

2024-03-18

如何获取 GDI 的字距调整信息以供使用获取字距对 http://msdn.microsoft.com/en-us/library/dd144895%28v=vs.85%29.aspx? The 文档 http://msdn.microsoft.com/en-us/library/dd144895%28v=vs.85%29.aspx指出

lpkrnpair 数组中的对数。如果字体超过 nNumPairs 字距调整对,函数返回错误。

但是,我不知道要传入多少对,而且我没有找到查询它的方法。

EDIT #2

这是我也尝试过的填充应用程序,它总是为任何字体的对数生成 0。 GetLastError 也将始终返回 0。

#include <windows.h>
#include <Gdiplus.h>
#include <iostream>

using namespace std;
using namespace Gdiplus;

int main(void)
{
    GdiplusStartupInput gdiplusStartupInput;
    ULONG_PTR           gdiplusToken;
    GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

    Font* myFont = new Font(L"Times New Roman", 12);
    Bitmap* bitmap = new Bitmap(256, 256, PixelFormat32bppARGB);
    Graphics* g = new Graphics(bitmap);

    //HDC hdc = g->GetHDC();
    HDC hdc = GetDC(NULL);
    SelectObject(hdc, myFont->Clone());
    DWORD numberOfKerningPairs = GetKerningPairs(hdc, INT_MAX, NULL );

    cout << GetLastError() << endl;
    cout << numberOfKerningPairs << endl;

    GdiplusShutdown(gdiplusToken);

    return 0;
}

EDIT我尝试执行以下操作,但是它仍然给我 0。

Font* myFont = new Font(L"Times New Roman", 10);
Bitmap* bitmap = new Bitmap(256, 256, PixelFormat32bppARGB);
Graphics* g = new Graphics(bitmap);

SelectObject(g->GetHDC(), myFont);
//DWORD numberOfKerningPairs = GetKerningPairs( g->GetHDC(), -1, NULL );
DWORD numberOfKerningPairs = GetKerningPairs( g->GetHDC(), INT_MAX, NULL );

问题在于您正在传递一个Gdiplus::Font而不是 HFONTSelectObject。你需要转换Font* myFont into a HFONT,然后通过HFONT进入选择对象。

首先,要转换一个Gdiplus::Font into a HFONT,你需要得到LOGFONT http://msdn.microsoft.com/en-us/library/ms901140.aspx来自Gdiplus::Font。一旦你做到了这一点,剩下的就很简单了。获取字距对数量的工作解决方案是

Font* gdiFont = new Font(L"Times New Roman", 12);

Bitmap* bitmap = new Bitmap(256, 256, PixelFormat32bppARGB);
Graphics* g = new Graphics(bitmap);

LOGFONT logFont;
gdiFont->GetLogFontA(g, &logFont);
HFONT hfont = CreateFontIndirect(&logFont);

HDC hdc = GetDC(NULL);
SelectObject(hdc, hfont);
DWORD numberOfKerningPairs = GetKerningPairs(hdc, INT_MAX, NULL );

如您所知,我所做的唯一功能更改是创建一个FONT.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取字距调整信息 的相关文章

随机推荐

  • OpenMp 根据变量设置并行循环的线程数

    有没有办法根据变量的值设置 OpenMP 并行区域的线程数 最初 整个应用程序的线程数 nofCores 在我的 AMD FX 8350 上 nofCores 8 对于这个区域 如果变量是 3 那么我只需要 3 个线程 如果变量 gt 核心
  • Twitter“无法验证您的身份”错误

    我正在使用 Rails 应用程序的 twitter gem 这样我就可以将我的博客文章自动更新到我的 twitter feed 上 我跟着gem 自述文件说明 https github com sferik twitter 将其放入 con
  • 有什么方法可以从内部函数中退出外部函数吗?

    在 PHP 中 如果我有一个函数调用另一个函数 有没有办法让被调用函数退出调用者函数而不杀死整个脚本 例如 假设我有一些类似的代码 p This is some text After this text I m going to call
  • 如何在seaborn catplot中旋转xticklabel

    我无法在 Seaborn Matplotlib 中旋转我的 xlabel 我尝试了很多不同的解决方案 但无法修复它 我在 stackoverflow 上看到了很多相关问题 但它们对我不起作用 我当前的绘图如下所示 但我希望 xlabel 旋
  • Django 检查查询集模型类型的最佳方法

    我有一个 Django 操作函数 我想在基于不同模型的查询集上使用它 检查我的查询集组成的模型类型的最佳方法是什么 假设我想检查 models py 中定义的 Library 类 目前我可以使用它来工作 for object in quer
  • 使用 CreateEvent 创建/打开已存在的事件是否会重置信号?

    如果我使用 CreateEvent 打开一个事件 responseWaitEvent CreateEvent NULL no security TRUE manual reset event FALSE not signaled LPTST
  • 将成员添加到 MailChimp 列表时出现 400 错误请求

    我正在发送一个POST请求以下资源 http developer mailchimp com documentation mailchimp reference lists members 并得到 400 我明白错误意味着什么 http d
  • 如何在标题中仅保留唯一值并在不同行中获取与这些值相对应的值?

    我有一个链接 在该链接中我有一些产品 每个产品中都有一个规格表 该表的第一列应为标题 第二列应为与其对应的数据 每个表的第一列都不同 有一些重叠的类别 我想要一张大表 其中包含所有这些类别 并且按行排列不同的产品 我能够获取一张表 一种产品
  • Android 使用 AccountManager 添加帐户

    大家好 我正在尝试使用 androids accountManager 添加帐户 我不断收到下面的堆栈跟踪 伙计们 我无法发布我的所有代码 因为我打破了 Stack Overflow 允许我输入的限制 因此 我只会发布您请求的代码片段 因为
  • 通过 ASP.NET Web API 有效使用 async/await

    我正在尝试利用async await我的 Web API 项目中的 ASP NET 功能 我不太确定它是否会对我的 Web API 服务的性能产生任何影响 请在下面找到我的应用程序的工作流程和示例代码 工作流程 UI应用程序 Web API
  • 组件的松耦合

    我创建了一个提供消息 电子邮件和短信的类库 程序集 该类库定义了一个接口 IMessenger EmailMessage 和 SmsMessage 类都实现了该接口 我认为这是一个通用库 它将成为我的基础设施层的一部分 并且可以 可以在任何
  • 微软机器人框架自行崩溃[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我收到这个令牌请求 error invalid request error description AADSTS90002 No
  • VS 代码评论面板

    我正在看 comments openPanel openOnSessionStartWithComments 在 VS Code 中设置 但我不太明白这是如何工作的 我在 Google 或 StackOverflow 上找不到任何关于此的信
  • 配置对象无效。 Webpack 已使用与 API 架构不匹配的配置对象进行初始化

    我有一个从在线课程创建的简单的 helloworld React 应用程序 但是我收到此错误 配置对象无效 Webpack 已使用初始化 配置对象与 API 架构不匹配 配置有一个未知属性 postcss 这些属性有效 object amd
  • 防止SDL程序消耗额外资源

    我正在设计应该在图像上展示开放简历的程序 我注意到基本 SDL 应用程序的概念非常糟糕 它由循环和延迟组成 while true while event is in buffer event process event event do s
  • python中全局变量的频率?

    Stack Overflow 有很多关于 python 中的全局变量的问题 它似乎给来自其他语言的人们带来了一些困惑 范围界定规则并不完全按照许多来自其他背景的人所期望的方式发挥作用 同时 代码不应该在类级别上组织 而是在模块级别上组织 因
  • 在 Visual Studio 中构建完成后压缩文件

    我有一个要求 在构建解决方案文件后需要压缩一些文件 一旦我在发布 调试模式下构建项目 这可以自动实现吗 仅在进行 Release 构建时使用 powershell if ConfigurationName Release powershel
  • Keras 不在具有 python 3.5 和 Tensorflow 1.4 的 Pycharm 上使用 GPU [重复]

    这个问题在这里已经有答案了 from tensorflow python client import device lib def get available gpus local device protos device lib list
  • 使用 Retrofit observable 处理网络错误

    当将 Observables 与 Retrofit 结合使用时 如何处理网络故障 鉴于此代码 Observable
  • 获取字距调整信息

    如何获取 GDI 的字距调整信息以供使用获取字距对 http msdn microsoft com en us library dd144895 28v vs 85 29 aspx The 文档 http msdn microsoft co