以下代码在 Windows 7(和以前的 Windows 版本)和 Windows 8 之间以不同的方式显示相同的字符串:
Graphics graphics(ps.hdc);
std::unique_ptr<StringFormat> format(StringFormat::GenericDefault()->Clone());
Font font(L"Segoe UI", static_cast<Gdiplus::REAL>(17.5), FontStyleBold, UnitPixel);
format->SetTrimming(StringTrimmingNone);
std::wstring name("rt");
RectF rectName;
graphics.MeasureString(name.c_str(), -1, &font, PointF(20, 20), format.get(), &rectName);
graphics.DrawString(name.c_str(), -1, &font, rectName, format.get(), &SolidBrush(Color()));
graphics.DrawRectangle(&Pen(Color(255, 0, 0)), rectName);
在 Windows 7 中,我得到了矩形内的字符串 'rt',因为它应该出现。在 Windows 8 中,仅出现第一个字母“r”。这似乎只发生在某些字符对上。例如,字符串 're' 在两个操作系统中都能正确显示。从 MeasureString() 返回的矩形在 Windows 7 和 Windows 8 中似乎是相同的。对这种差异有什么解释吗?