我想創建自己的本機win32 C++複選框,可以有一個透明的背景。這個想法是讓窗口/小部件看起來與Windows XP樣式複選框完全相同,只是它可以具有透明背景。繪製折線結果像素線
我的問題:當我爲我的文本框繪製刻度線時,「刻度線」看起來像素化和參差不齊 - 請參閱下面的圖片以瞭解它的外觀。它看起來不像實際的複選框打勾。
左邊的複選框是我,右邊是默認的Windows一個我試圖複製:
我怎樣才能讓我的蜱光滑,沒有像素化。什麼是我可以用來繪製刻度的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);
我的GDI +很生鏽,但我懷疑你可能想查看紋理畫筆的用法,並使用帶有alpha混合邊緣的小圓形紋理。您可以使用筆刷創建筆,然後像以前一樣繪製多段線。 – Rook