在 Win7 中,某些字体无法像在 Win2K/XP 中那样工作

2023-12-31

我的问题是如何更改字体处理才能在 Windows 7 下正常工作。我确信我已经对以前有效但不再有效的内容做出了假设。但我什至不知道从哪里开始寻找!我祈祷有人可以帮忙!以下是我理解的详细信息(我还在 Microsoft Windows 开发人员论坛上发布了这个问题,但他们没有回答):

是的,我已经落伍了(哎呀,我仍然用纯 C 语言编写 WIN32 代码!) 我编写了一个已有 10 年历史的 DLL,它在窗口的客户区域中模仿了更旧的 DOS 屏幕 I/O 库。不用说,它只允许使用固定宽度的字体。当一些使用DLL的程序被转移到Windows 7时,当使用固定宽度的TRUE TYPE字体时,会出现奇怪的闪烁(位图字体仍然可以正常工作)。我们已经追踪到这个问题一个字符写成ExtTextOut比应有的更宽。我用三种不同的方式检查了测量结果(通过使用GetTextExtentPoint32在 132 个字符的字符串上除以 132,通过调用GetTextMetrics甚至通过使用GetCharABCWidths对于所有 256 个字符),并且他们都同意字体具有相同的宽度。但ExtTextOut正在渲染背景矩形比字体宽度宽一或两个像素。或者,它开始在参数中给出的位置左侧渲染一两个像素的背景[我这样称呼它:ExtTextOut( hdc, r.left, r.top, ETO_OPAQUE, &r, &ch, 1, NULL ).] 请记住,此 EXACT 代码在 Windows 2000、Windows XP 和 Windows 7 上的位图字体下完美运行,但在 Windows 7 下它不再与固定宽度的 True Type 字体一起正常运行。

对于那些不明白我需要做什么的人:尝试想象在一张方格纸上的每个方块上写一个字符。每个方块都使用相同的字体,但可能具有不同的前景色和/或背景色。我用TA_TOP|TA_LEFT文本对齐方式,因为它是最简单的,任何一致应用的对齐方式都应该适用于固定宽度的字体。

我看到的是 ExtTextOut 发出的背景矩形比我在RECT *范围。由于我提供的矩形是根据报告的字体大小创建的,因此这种情况永远不会发生——并且在 Windows XP 及更早版本上从未发生过,并且 Windows 7 下的位图(即 .FON)字体也不会发生这种情况,任何一个。但在 Windows 7 下,固定宽度的 TrueType 字体总是会发生这种情况。这是在 Windows 2000、Windows XP 和 Windows 7(32 和 64)上运行的完全相同的可执行文件。虽然我很想简单地说 Windows 7 有一个错误,我更倾向于相信我对 Windows 下的字体处理所做的一些基本假设不再正确(在为 Windows 编写软件 20 年之后)。

但我不知道如何或在哪里发现那可能是什么!请帮助我!

---修正---

对于任何感兴趣的人,我已经设法解决我认为是错误的问题 - 直到我找到相反的文档。我的解决方法包括对我的库进行两项更改:

  1. 使用从返回的大小GetTextExtentPoint32()改为“X” 的数据来自TEXTMETRICS.
  2. 包括ETO_CLIPPING全部标记ExtTextOut() calls.

以前,我使用的是tmHeight+tmExternalLeading连续文本行顶部之间的像素数,如记录的那样。我发现 size.cy 值从GetTextExtentPoint32()不一样,而且似乎更准确。我发现的最糟糕的例子是 OCRB true type 字体。这是我在调试器中看到的我创建的 OCRB 字体(使用系统字体选择对话框):

ocrbtm.tmHeight          = 11
ocrbtm.tmExternalLeading =  7

ocrbsize.cy = 11

因此,由于某种我尚未发现的原因,Windows 忽略了为 OCRB 字体定义的外部主值。使用大小值而不是 TM 会产生漂亮、整洁、紧凑的文本,这正是我想要的。

The ETO_CLIPPING标志对我来说不是必需的,因为我将矩形设置为单个字符的尺寸并使用ETO_OPAQUE填充背景(并覆盖以前的单元格内容。)但是如果没有剪切标志,单个字符比大小、文本度量或 ABC 宽度指示的宽度要宽——至少,基于所有到目前为止我找到的文档。

我相信高度问题已经存在很长一段时间了,但直到我们在 Windows 7 下运行我们的软件之前,其余的都是不必要的。我将其附加到我的问题中,看看是否有人可以解释我明显不明白的内容。

-- 修正案2 --

1:我能找到的所有文档都表明tmHeight+tmExternalLeading应该产生单行间距的文本。时期。但这并不总是正确的,我找不到说明 Windows 如何确定有时返回的不同值的文档GetTextExtentPoint32().

2:Win7下(也许是Vista)ExtTextOut开始填充比应有的多一点的背景(通过在右侧添加几个额外的像素),但前提是选择了 true type 字体。即使矩形是这样的,它也会这样做double字符的预期大小(在两个维度上)。DPI/缩放可能是一个因素,但由于我的系统设置为 100%,Windows 似乎在 1:1 缩放因子方面遇到了麻烦,这似乎是一个因素是一个错误。事实上,它只影响真实类型而不影响位图(.FON)字体,这一事实似乎也排除了缩放(除非有is缩放系统中的错误),因为 Windows 应该尝试缩放所有文本,而不仅仅是其中的一部分。此外,“自定义 DPI 设置”对话框中还有一个灰色(但已选中)的设置“使用 Windows XP 样式 DPI 缩放”。最后,整个问题可能是由于我在 Windows Classic 主题下运行而不是 Aero 或其他 Win7 本机主题之一造成的。

-- 修正案3 --

简单地调用 SetProcessDPIAware() 对我遇到的问题没有任何影响。由于我的问题存在于 100% DPI 设置(比例 1:1),如果我的问题is与DPI相关,那么我一定发现了DPI虚拟化的一个bug,因为微软是这样描述该功能的:

此功能的工作原理是向应用程序提供“虚拟化”系统指标和 UI 元素,就好像它以 96 DPI 运行一样。然后,应用程序渲染到 96 DPI 的离屏表面,桌面 Windows 管理器会缩放生成的应用程序窗口以匹配 DPI 设置。

我的所有设置都显示我处于 100% 缩放状态,并且在自定义设置框中查看清楚地显示这意味着 96 DPI。因此,如果从 96 DPI 到 96 DPI 的 DPI 虚拟化对我的固定宽度 true type 字体不起作用,那么 Windows 就有问题了,对吧?或者是否需要调用(或停止调用?)某些函数才能让 DPI 虚拟器正常工作?

我仍然不相信所谓的缩放问题实际上与我最初认为的字体大小有很大关系。这是因为问题体现在背景矩形被充满ExtTextOut()而不是发出的文本字符。当字体为 True Type 时,背景矩形会放大一点。我现在还验证了无论使用 Windows Classic 主题还是标准 Windows Aero 主题都会出现此问题。现在构建一个简化的示例,以便其他人可以进行实验。

——修正案4——

我创建了一个最小的演示程序,它展示了我所看到的内容(以及我正在做的事情)。Visual Studio 2010 项目/源代码可以从http://www.svalli.com/files/fwtt.7z http://www.svalli.com/files/fwtt.7z-- 我故意不包含可执行文件,因为我不想冒传播恶意软件的风险。该程序让您选择一种固定宽度的字体,然后将两个 5x5 字符网格写入客户区,其中一个是使用GetTextExtentPoint32尺寸和一个使用TEXTMETRICMicrosoft 记录的大小。网格采用黑白棋盘图案,最后在中心写入黄底红字以显示重叠效果(您可能需要缩放实用程序才能清楚地看到它。)该程序还在下方绘制一个以 5 X 开头的字符串网格,从相同的左偏移开始,用作我放置单个字符的方法的比较(我匹配字符串。)菜单允许在ExtTextOut以及其他字体的选择。还有一个命令行选项dpiaware(区分大小写)导致程序调用SetProcessDPIAware()当它启动时,以便也可以评估该调用的效果。

从创建这个我了解到ExtTextOut正在填充正确的背景矩形,但使用不透明背景渲染的字符可能比应有的宽度更宽,甚至可能不从何处开始ExtTextOut被告知开始画画!我说“应该”是因为我最终得到的字符间距与我得到的字符间距相匹配ExtTextOut渲染整个字符串。重叠显然可能在给定矩形的一侧或两侧,例如,OCRB 在字符单元的左侧和右侧都添加了一个额外的像素,而我检查过的其他 true type 字体则在右侧添加了两个像素边缘。

我真的想以“正确”的方式做到这一点,但我找不到任何文档来显示我做错了什么或遗漏了什么。好吧,我可能在 100% 以外的比例下缺少 DPI Aware 的一些东西,但除此之外,我只是感到困惑。

——修正案5——

稍微不那么困惑了......问题是由 ClearType 引起的。关闭 ClearType 会使所有字体再次工作。在 XP 下打开 ClearType 会导致同样的问题。显然,ClearType 可以默默地(直到有人告诉我如何检测它)将字符水平拉伸几个像素,以便为它添加的阴影像素腾出空间,以平滑事物。

剪辑是解决这个问题的唯一方法吗?

-- 修正案 6 --

上面我的剪辑问题的部分答案:当创建新字体时,我现在执行以下操作(以伪代码):

CreateFontIndirect
SelectFont
GetTextMetrics
if( (tmPitchAndFamily & TMPF_TRUETYPE) && Win6.x or above )
   if( SystemParametersInfo( SPI_GETCLEARTYPE ) )
        lfQuality = NONANTIALIASED_QUALITY
        DeleteObject( font )
        CreateFontIndirect

不启用裁剪此功能almost始终适用于我正在使用的字体大小,尽管我发现一些字体仍然在字符单元格的右侧(或左侧)呈现额外的像素。幸运的是,这些似乎是在互联网上找到的免费字体,因此它们的整体质量可能低于专业字体铸造厂的标准。

如果有人能找到更好的答案,我真的,REALLY喜欢听!在那之前,我认为这已经是最好的了。感谢您阅读本文!


确保您的代码是高 DPI 感知 http://msdn.microsoft.com/en-us/library/windows/desktop/dd464646%28v=vs.85%29.aspx, 进而告诉操作系统您的进程支持 DPI http://msdn.microsoft.com/en-us/library/windows/desktop/ms633543%28v=vs.85%29.aspx.

如果您不告诉操作系统您了解 DPI,则某些测量功能会撒谎并基于显示器 DPI 实际上为 96 dpi 的假设为您提供数字,而不管其实际情况如何。同时,绘图函数将尝试在另一个方向上缩放。对于简单的高级绘图,这种方法通常有效(尽管它经常导致文本模糊)。对于小测量和单个字符的精确放置,这通常会导致舍入问题,从而导致诸如字体大小不一致 http://msdn.microsoft.com/en-us/library/windows/desktop/dd371771%28v=vs.85%29.aspx。此行为是在 Windows Vista 中引入的。

您可以在 Visual Studio 2010+ 中随时看到它,因为语法荧光笔会在您键入时为文本和单词移动几个像素。真他妈的烦人。

关于修正案:

tmExternalLeading只是字体设计者关于在文本行之间放置多少额外空间的建议。 MSDN 文档通常会说“应用程序在行之间添加的额外前导(空格)量”。好吧,您就是应用程序,因此“正确的做法”是在您自己绘制文本时将其添加到行之间,但这实际上取决于您。 (我怀疑像 DrawText 这样的高级函数会使用它。

这是完全正确的GetTextExtentPoint32(和朋友)返回一个size.cy等于tmHeight并忽略tmExternalLeading。作为程序员,最终你的选择是多少导致实际使用。

您可以通过一些简单的绘图代码看到这一点。选择 tmExternalLeading 非零的字体(Arial 适用于我)。使用绘制一些文本TextOut和独特的背景颜色。然后用测量文本GetTextExtentPoint32并根据您返回的值画一些线。您将看到背景颜色矩形不包括外部引线。外部领先就是:外部。它不在字符单元格的范围内。

  // Draw the sample text with an opaque background.
  assert(::GetMapMode(ps.hdc) == MM_TEXT);
  assert(::GetBkMode(ps.hdc) == OPAQUE);
  assert(::GetTextAlign(ps.hdc) == TA_TOP);
  COLORREF rgbOld = ::SetBkColor(ps.hdc, RGB(0xC0, 0xFF, 0xC0));
  ::TextOutW(ps.hdc, x, y, pszText, cchText);
  ::SetBkColor(ps.hdc, rgbOld);

  // This vertical line at the right side of the text shows that opaque
  // background is exactly the height returned by GetTextExtentPoint32.
  SIZE size = {0};
  if (::GetTextExtentPoint32W(ps.hdc, pszText, cchText, &size)) {
    ::MoveToEx(ps.hdc, x + size.cx, y, NULL);
    ::LineTo(ps.hdc, x + size.cx, y + size.cy);
  }

  // These horizontal lines show the normal line spacing, taking into
  // account tmExternalLeading.
  assert(tm.tmExternalLeading > 0);  // ensure it's an interesting case
  ::MoveToEx(ps.hdc, x, y, NULL);
  ::LineTo(ps.hdc, x + size.cx, y);  // top of this line
  const int yNext = y + tm.tmHeight + tm.tmExternalLeading;
  ::MoveToEx(ps.hdc, x, yNext, NULL);
  ::LineTo(ps.hdc, x + size.cx, yNext);  // top of next line

彩色矩形底部与下一行顶部之间的间隙表示外部前导,它始终位于字符单元格之外。

OCR-B http://en.wikipedia.org/wiki/OCR-B专为银行设备中可靠的光学字符识别而设计。较大的外部行距(相对于实际文本的高度)可能适合某些 OCR 应用程序。对于这种特殊的字体,它可能不是一个审美选择。

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

在 Win7 中,某些字体无法像在 Win2K/XP 中那样工作 的相关文章

  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • 将古吉拉特语文本插入 MySQL 表会产生垃圾字符和不可读的文本

    我有三个 MySQL 表 我正在向其中插入古吉拉特语内容 当我插入两个表时 它们插入得很好并且可读 但在一个表中 它显示垃圾字符 不可读的文本 我怎样才能解决这个问题 MySQL 有每个表的字符集设置 http dev mysql com
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git
  • Windows 窗口对接

    我想知道如何在 Windows 中将窗口停靠 捕捉到屏幕的一侧 最好使用直接的 Win32 API 我正在寻找的效果就像任务栏 一个在屏幕上有保留空间的窗口 因此最大化另一个窗口会使该窗口占据屏幕的其余部分 但使我的窗口保持在适当的位置并可
  • 如何强制 JavaFX 字体抗锯齿?

    在测试 JavaFX 8 应用程序的 GUI 时 我注意到某些标签不显示抗锯齿文本 经过一番谷歌搜索和挣扎后 我发现正在发生一件非常烦人的事情 抗锯齿仅应用于字体大小大于 80 像素的标签 下面是一个比较应用了 AA 的 JavaFX 和
  • NodeJS Express Windows 最大连接数设置

    在哪里设置nodejs的最大连接数 用于使用express get 在 Windows 10 中 与linux中的最大文件 描述符 设置有关吗 有该设置的 Windows 版本吗 最好是在nodejs中进行设置 以便在迁移到unix时兼容
  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • 将 CrashDumps 转储到应用程序运行所在的同一文件夹中

    我编写了一个应用程序 我希望对其进行一定程度的自动调试 我想使用 Windows 错误报告将故障转储输出到应用程序运行所在的同一文件夹中 我的想法是 我可以让我的应用程序在它自己的文件夹中查找任何 dmp 文件 然后根据需要上传它们进行分析
  • 常见的 Windows 编译器上有哪些 std::locale 名称可用?

    该标准对于什么构成有效的语言环境名称几乎没有提及 只有传递无效的区域设置名称才会导致std runtime error 哪些语言环境名称可用于常见的 Windows 编译器 例如 MSVC MinGW 和 ICC 好吧 C 和 C 语言环境
  • 将所有文件与指定目录(和子目录)中的所有文件进行二进制比较

    我需要将目录及其子目录中包含的所有文件与同一目录及其子目录中包含的所有其他文件进行比较 并将匹配文件的路径记录到文本文件或 CSV 我意识到有一些软件工具可以做到这一点 但除非它可以在 Windows 中开箱即用 否则我将不被允许在我的网络
  • 为什么我在 Windows 上使用 async 和 wait 时会收到 NotImplementedError 错误?

    我有这个代码 import os import time import asyncio async def run command args Example from http asyncio readthedocs io en lates
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • 从代码动态更改多个文本视图的大小(没有“磁盘上”xml 主题)?

    我有 10 个文本视图在我的代码中 我想更改所有代码的字体大小 在我的布局中我使用了 style定义通用属性 但是我不知道一旦布局出现在屏幕上如何从代码中更改它们 我不想做的是更新 AND 对象 但只写在一处 我知道我可以使用应用主题但这假
  • iOS - 如何在 swift 中使用 `NSMutableString`

    我已经看过这段 Objective C 代码 但我很难在 swift 中做同样的事情 NSMutableAttributedString res self richTextEditor attributedText mutableCopy
  • 如何配置应用程序以在具有高 DPI 设置(例如 150%)的计算机上正确运行?

    我用 C 创建了一个简单的 Winforms 应用程序 当我在具有高 DPI 设置 例如 150 的计算机上运行应用程序时 应用程序会放大 到目前为止 一切都很好 但所有文本也只是按比例放大 而不是使用更大的字体大小渲染字体 这当然会导致文
  • C# 获取子窗口句柄

    我正在用 C 启动一个进程 然后使用 SendMessage 将 Windows 消息发送到该进程 通常我将消息发送到 Process MainWindowHandle 但在某些情况下 我可能需要找到子窗口句柄并向那里发送消息 我将如何在
  • 使用Windows 7计算器进行对数计算[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我想使用Windows计算器在科学模式中为了求解一个非常基本的对数方程 但不幸的是 我无法做到这一点 问题是这样的 log 5 125 非常感谢您的帮
  • Windows:更改与文件类型关联的应用程序的名称/图标

    我想将 Windows 中的文件类型与特定应用程序相关联 但我需要这样做 以便当用户打开 打开方式 菜单时 列表中应用程序的名称和图标是针对该文件类型自定义的 即 不仅仅是可执行文件的名称和图标 这是因为该二进制文件是一个通用二进制文件 可
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal

随机推荐

  • 无法从 Web.Config 读取 appSettings 值

    我的 web config 中有以下内容
  • C# 中附加到鼠标的工具提示

    如何使用 C 获取附加到鼠标光标的工具提示 我试图实现如下所示的效果 一个小工具提示显示 Ctrl Shift Alt 键的状态 我目前正在使用Tooltip但除非有大约 2 行文本 否则它拒绝显示 tt new ToolTip tt Au
  • 如何解决加载模型以获得新预测的问题?

    我训练了一个模型并将其另存为import os model save 我想使用我的模型对新测试集进行预测 因此我通过以下方式加载它model tf keras models load model 它向我展示了这种警告 警告 tensorfl
  • C# 的 HttpListener 问题

    我使用一个 Windows 服务编写了HttpListener异步处理来自点的请求 它工作正常 但有时会遇到问题 需要重新启动服务或服务器才能修复 最初我声明了侦听器对象 public HttpListener PointsListener
  • 从 Moq 调用操作

    我有一个服务 其方法需要两个Actions 一为成功 一为失败 每个Action采用包含附加信息的 Result 参数 void AuthoriseUser AuthDetails loginDetails Action
  • Android 中的 Firebase 本地数据库有多安全?

    我计划改用 Firebase 作为我的 Android 应用程序的本地和在线数据库 根据文档 Firebase 首先将更改存储到本地数据库 然后在网络可用时将其推送到在线数据库 在我的应用程序中 我会将一些有关用户的非常敏感的数据放入数据库
  • TypeScript 接口是否应该在 *.d.ts 文件中定义

    TypeScript 新手问题 在我们的项目中 我们使用一些外部 JavaScript 库 需要在其中添加 d ts 文件 我了解这个用例以及我们需要这样做的原因 但是 对于我们自己定义的接口 我的一位开发人员建议我们在 d ts 文件中定
  • 如何使用 gmock MOCK_METHOD 进行重载运算符?

    我是 googlemock 和 StackOverflow 的新手 我在使用时遇到问题MOCK METHODn在googlemock中 我相信这个功能被广泛使用 这就是我所做的 我有一个抽象类Foo虚拟重载operator class Fo
  • 无法在 Azure DevOps 构建管道中使用 .NET SDK 代理

    我有一个 ASP NET Core 2 1 并添加了 Microsoft WindowsAzure Storage 的 nuget 包 但是将代码推送到存储库后 构建管道在运行构建代理时发生包错误 是否有必要在构建中添加任何其他代理除 BU
  • 将 ImageView 设置为 Android 后台

    我发现了许多类似的问题和答案 但我没有成功地解决这些问题 我想将 ImageView 设置为背景 以便我所做的其他所有事情都在它前面 我不想使用 xml 背景选项 因为我将在活动中更改我的背景 并且我不知道如何防止它拉伸 Thanks bg
  • Laravel 5 + Eloquent toJson/toArray 导致奇怪的分段错误

    我讨厌回答我自己的问题 所以也许你可以帮助我找到解决这个问题的方法 我有一些属于彼此的雄辩模型 我通过像这样的关联来设置它们 这都是正常的事情 不幸的是 这个过程会导致 device 工作不稳定 下面您可以看到单个值是可以访问的 但任何形式
  • void_t“可以实现概念”?

    我在看第二部分 期间他讨论了他的小说的用途void t lt gt 建造 在他的演讲中 Peter Sommerlad 问了他一个我不太明白的问题 链接直接指向问题 所讨论的代码就发生在该问题之前 萨默拉德问道 沃尔特 这是否意味着我们现在
  • 向 numpy 数组中的所有奇数或偶数索引元素添加一个数字,无需循环

    假设你的 numpy 数组是 A 1 1 2 3 4 您可以简单地执行以下操作 A 1 向 numpy 数组的每个元素添加一个数字 我正在寻找一种将数字添加到奇数或偶数索引数字的方法A 2 1同时保持整个阵列完好无损 是否可以在没有任何循环
  • 使用 IntelliJ IDEA 运行 Maven 项目

    我是 IntelliJ IDEA 的新手 我想使用它运行一个简单的 Maven 快速入门项目 我按照所有说明进行操作 该项目已成功构建 但是当我尝试编译并运行它时 Run按钮未激活 看来 IntelliJ IDEA 无法弄清楚主类在哪里 这
  • CGDataProviderCopyData() 实际上复制字节吗?或者只是指针?

    我正在尽可能快地连续运行该方法 并且越快越好 所以显然如果CGDataProviderCopyData 实际上是逐字节复制数据 那么我认为必须有一种更快的方法来直接访问该数据 它只是内存中的字节 任何人都知道如果CGDataProvider
  • 2D 弹性球碰撞物理

    我正在制作一个涉及弹性球物理学的程序 我已经计算出了与墙壁和静止物体碰撞的所有数学公式 但我无法弄清楚当两个移动的球碰撞时会发生什么 我有质量和速度 确切地说是 x 和 y 速度 但每个球的速度及其方向都可以 并且想要这些的公式 请记住 这
  • 为什么自动向下转换不应用于模板函数?

    有人问这个问题 https stackoverflow com questions 45505477关于字符串附加 它是string s s s 2 不编译 人们给出的答案是operator 被定义为模板函数 而operator 不是 所以
  • 更改 Azure AD B2C 注销 URL(将 AzureADB2C/Account/SignedOut 更改为自定义 URL)

    我目前正在构建一个 C Net Core 2 2 应用程序 该应用程序使用 Azure B2C OIDC 进行登录 身份验证 我已经自定义了登录页面 并且知道如何使用自定义页面布局使用我的网站上托管的 CSS 和代码来自定义编辑 忘记密码屏
  • 使用委托作为 LINQ 的 Distinct() 的相等比较器

    我有一个 LINQ Distinct 语句 它使用我自己的自定义比较器 如下所示 class MyComparer
  • 在 Win7 中,某些字体无法像在 Win2K/XP 中那样工作

    我的问题是如何更改字体处理才能在 Windows 7 下正常工作 我确信我已经对以前有效但不再有效的内容做出了假设 但我什至不知道从哪里开始寻找 我祈祷有人可以帮忙 以下是我理解的详细信息 我还在 Microsoft Windows 开发人