這個函數用於設置當前設備畫線樣式。
void setlinestyle(
const LINESTYLE* pstyle
);
void setlinestyle(
int style,
int thickness = 1,
const DWORD *puserstyle = NULL,
DWORD userstylecount = 0
);
參數
pstyle
指向畫線樣式 LINESTYLE 的指針。
style
畫線樣式(詳見備註)。
thickness
線的寬度,以像素爲單位。
puserstyle
用戶自定義樣式數組,僅當線型爲 PS_USERSTYLE 時該參數有效。
數組第一個元素指定畫線的長度,第二個元素指定空白的長度,第三個元素指定畫線的長度,第四個元素指定空白的長度,以此類推。
userstylecount
用戶自定義樣式數組的元素數量。
返回值
無
備註
參數 style 指定了畫線樣式,該樣式由直線樣式、端點樣式、連接樣式三類組成。可以是其中一類或多類的組合。同一類型中只能指定一個樣式。
直線樣式可以是以下值:
值 | 含義 |
PS_SOLID | 線形爲實線。 |
PS_DASH | 線形爲:------------ |
PS_DOT | 線形爲:············ |
PS_DASHDOT | 線形爲:-·-·-·-·-·-· |
PS_DASHDOTDOT | 線形爲:-··-··-··-·· |
PS_NULL | 線形爲不可見。 |
PS_USERSTYLE | 線形樣式爲用戶自定義,由參數 puserstyle 和 userstylecount 指定。 |
宏 PS_STYLE_MASK 是直線樣式的掩碼,可以通過該宏從畫線樣式中分離出直線樣式。
端點樣式可以是以下值:
值 | 含義 |
PS_ENDCAP_ROUND | 端點爲圓形。 |
PS_ENDCAP_SQUARE | 端點爲方形。 |
PS_ENDCAP_FLAT | 端點爲平坦。 |
宏 PS_ENDCAP_MASK 是端點樣式的掩碼,可以通過該宏從畫線樣式中分離出端點樣式。
連接樣式可以是以下值:
值 | 含義 |
PS_JOIN_BEVEL | 連接處爲斜面。 |
PS_JOIN_MITER | 連接處爲斜接。 |
PS_JOIN_ROUND | 連接處爲圓弧。 |
宏 PS_JOIN_MASK 是連接樣式的掩碼,可以通過該宏從畫線樣式中分離出連接樣式。
掩碼宏表示對應樣式組所佔用的所有位。例如,對於一個已經混合了多種樣式的 style 變量,如果希望僅將直線樣式修改爲點劃線,可以這麼做:
style = (style & ~PS_STYLE_MASK) | PS_DASHDOT;
示例
以下代碼片段設置畫線樣式爲點劃線:
setlinestyle(PS_DASHDOT);
以下代碼片段設置畫線樣式爲寬度 3 像素的虛線,端點爲平坦的:
setlinestyle(PS_DASH | PS_ENDCAP_FLAT, 3);
以下代碼片段設置畫線樣式爲寬度 10 像素的實線,連接處爲斜面:
setlinestyle(PS_SOLID | PS_JOIN_BEVEL, 10);
以下代碼片段設置畫線樣式爲自定義樣式(畫 5 個像素,跳過 2 個像素,畫 3 個像素,跳過 1 個像素……),端點爲平坦的:
DWORD a[4] = {5, 2, 3, 1};
setlinestyle(PS_USERSTYLE | PS_ENDCAP_FLAT, 1, a, 4);