gpt4 book ai didi

c++ - 绘制折线会产生像素化线

转载 作者:太空宇宙 更新时间:2023-11-04 12:08:17 24 4
gpt4 key购买 nike

我正在尝试创建我自己的可以具有透明背景的 native win32 C++ 复选框。这个想法是让窗口/小部件看起来完全像 Windows XP 样式的复选框,除了它可以有透明背景。

我的问题:当我为文本框绘制勾号时,“勾号”线看起来像素化且参差不齐 - 请参阅下面的图片了解它的外观。它看起来不像实际的复选框勾选那样平滑。

左边的复选框是我的,右边的是我试图复制的默认窗口: enter image description here

如何使我的刻度线平滑且不像素化。 什么是我可以用来绘制刻度线的 Win32 GDI 函数。我应该使用位图图像而不是在 GDI 中绘制刻度吗?目前我使用 PolylineTo() 来绘制刻度线。也许我应该使用 PolylineToEx()?

如有任何建议,我们将不胜感激。

画勾的代码(这段代码在WM_PAINT中):

 HGDIOBJ hPen      = CreatePen(PS_SOLID, 2, RGB(45,45,45)); //ExtCreatePen(PS_COSMETIC, dwPenStyle[i], 1, &lb, 0, NULL); 
HGDIOBJ hPenOld = SelectObject(hdc, hPen);
POINT tickPnts[3] = {{3,((height-CHECK_RECTH)/2)+6}, {5,((height-CHECK_RECTH)/2)+9}, {9,((height-CHECK_RECTH)/2)+2}};
MoveToEx(hdc, tickPnts[0].x, tickPnts[0].y, NULL);
PolylineTo(hdc, tickPnts, 3);
SelectObject(hdc, hPenOld);
DeleteObject(hPen);

最佳答案

Windows 使用 Marlett呈现复选框刻度、窗口框架按钮和其他可缩放 UI 元素的字体。您可以使用抗锯齿渲染字体以获得平滑的边缘。

(这肯定曾经是真的;我不确定 Windows 7 中的新窗口框架按钮是否使用该字体,但该字体仍然存在。)

GDI 不进行任何抗锯齿处理,这就是您的线条看起来参差不齐的原因。

关于c++ - 绘制折线会产生像素化线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11011684/

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