我正在尝试创建自己的可以具有透明背景的本机 win32 C++ 复选框。这个想法是使窗口/小部件看起来与 Windows XP 样式复选框完全相同,只是它可以具有透明背景。
我的问题:当我为我的文本框画勾时,'勾'线看起来像素化和锯齿状 - 请参阅下面的图片以了解它的外观。它看起来不像实际的复选框勾选那样平滑。
左边的复选框是我的,右边是我要复制的默认窗口:
我怎样才能使我的刻度平滑而不像素化。什么是我可以用来绘制刻度的 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);