Windows 7上的CreatePen GDI功能问题

时间:2010-10-25 19:49:15

标签: gdi

当笔宽为3或4(LineTo什么都不绘制)时,CreatePen GDI函数在Windows 7上不起作用。它适用于0 - 2宽度。在所有情况下都使用PS_SOLID笔样式。

2 个答案:

答案 0 :(得分:1)

LineTo不包括该行的最终点。尝试使用不同的endcap设置,看看它是否有所作为。

答案 1 :(得分:0)

是否返回句柄或NULL?
您是否考虑过使用CreatePenIndirect和LOGPEN结构?
http://msdn.microsoft.com/en-us/library/dd183510(v=VS.85).aspx
http://msdn.microsoft.com/en-us/library/dd145041(v=VS.85).aspx
这在我的电脑上运行正常,Windows 7 x64:

Option Explicit

Private Declare Function CreatePen Lib "gdi32" ( _
   ByVal nPenStyle As Long, _
   ByVal nWidth As Long, _
   ByVal crColor As Long) As Long

Private Declare Function LineTo Lib "gdi32" ( _
   ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long

Private Declare Function SelectObject Lib "gdi32" ( _
   ByVal hDC As Long, ByVal hObject As Long) As Long

Private Declare Function DeleteObject Lib "gdi32" ( _
   ByVal hObject As Long) As Long

Dim x As Long
Dim y As Long
Dim w As Long

Private Sub Command1_Click()
   w = w + 1
   Dim hpen As Long: hpen = CreatePen(0, w, 0)
   Dim ret As Long: ret = SelectObject(Me.hDC, hpen)
   If ret <> 0 Then
       x = x + 10
       y = y + 10
       Call LineTo(Me.hDC, x, y)
   End If
   Call DeleteObject(hpen)
End Sub

多次点击该按钮