我被WinAPI的C++ 學習繪製形狀我試圖上WM_PAINT繪製2橢圓一些代碼:繪製形狀在WinAPI的C++
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
HPEN hPen = CreatePen(PS_DASHDOTDOT, 2, NULL);SelectObject(hdc, hPen);
Ellipse(hdc, 100, 200, 400, 400);
Ellipse(hdc, 300, 300, 500, 510);
DeleteObject(hPen);
EndPaint(hWnd, &ps);
但輸出是:
結果我期望的是既不是形狀是對方的前面。邊界是點劃線。 任何人都可以告訴我我的錯誤嗎?我很感謝你的幫助。
如果將寬度從2更改爲1,則您的虛線可能會奇蹟般地出現。從['CreatePen()'](http://msdn.microsoft.com/zh-cn/library/windows/desktop/ dd183509(v = vs.85).aspx)documentation:「如果由nWidth指定的值大於1,則fnPenStyle參數必須爲PS_NULL,PS_SOLID或PS_INSIDEFRAME。」 PS_DASHDOTDOT描述進一步說明了這一點:「筆具有交替的破折號和雙點,這種樣式僅在筆寬等於或小於設備單位時纔有效。」關於透明度,考慮一下NULL筆刷。 – WhozCraig
@WhozCraig:非常感謝。我懂了。但是有沒有什麼方法可以讓短劃線更寬?並可以繪製兩種形狀相互重疊,但保持2個形狀的邊界? – suti
自從我使用GDI繪圖以來,它已經過去了十多年。我需要一段時間才能回到它。同心橢圓可能是您在較粗線條(一個在另一個內部繪製)中最好的選擇。對於重疊區域,這需要我花一分鐘來刷新我的頭腦。也許是一個地區。 – WhozCraig