gpt4 book ai didi

c++ - TextOut 到设备上下文的中心

转载 作者:行者123 更新时间:2023-12-01 14:29:08 24 4
gpt4 key购买 nike

让我感到沮丧的是,这对我来说是多么困难。我有一个具有打印功能的 MFC 应用程序。当我点击打印时,我想创建一个 pdf 文件,在 A4 页面的中心有一个单词。我正在使用 CPrintDialog,并且我实际上在我的机器上 获得了我的结果(通过对 TextOut 的坐标进行硬编码)。

我希望此软件能够在任何类型的设备上下文中运行。我的猜测是必须有一种方法可以从 CDC 中获取逻辑坐标(TextOut 期望的)。我正在玩弄 GetDeviceCaps(使用 HORZSIZEHORZRESLOGPIXELSXASPECTX , PHYSICALWIDTH) 但这些值都没有接近我的硬编码值。事实上,我使用的 y 坐标是一个负值,这让我更加困惑。是否有找到设备上下文中心的通用方法?

这是我看到的值:

const int logPixY = dcPrinter.GetDeviceCaps(LOGPIXELSY); //600
const int logPixX = dcPrinter.GetDeviceCaps(LOGPIXELSX); //600

const int horzSize = dcPrinter.GetDeviceCaps(HORZSIZE); //216
const int vertSize = dcPrinter.GetDeviceCaps(VERTSIZE); //279

const int horzRez = dcPrinter.GetDeviceCaps(HORZRES); //5100
const int vertRez = dcPrinter.GetDeviceCaps(VERTRES); //6600

const int pWidth = dcPrinter.GetDeviceCaps(PHYSICALWIDTH); //5100
const int pHeight = dcPrinter.GetDeviceCaps(PHYSICALHEIGHT);//6600

const int aspectX = dcPrinter.GetDeviceCaps(ASPECTX); //600
const int aspectY = dcPrinter.GetDeviceCaps(ASPECTY); //600

写在页面中心的硬编码DrawText是:

dcPrinter.TextOut(4200, -5000, L"Center");

最佳答案

如果使用 GDI,通过以下方式居中会容易得多

SetTextAlign(hdc, TA_VCENTER|TA_VCENTER);

然后只需使用页面的中心点(宽度/2,高度/2)作为 TextOut 引用点。让 TextOut API 完成计算文本显示区域的工作。

关于c++ - TextOut 到设备上下文的中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62959292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com