【发布时间】:2010-10-27 22:58:18
【问题描述】:
当笔宽为 3 或 4(LineTo 不绘制任何内容)时,CreatePen GDI 函数在 Windows 7 上不起作用。它适用于 0 - 2 宽度。在所有情况下都使用 PS_SOLID 笔样式。
【问题讨论】:
标签: gdi
当笔宽为 3 或 4(LineTo 不绘制任何内容)时,CreatePen GDI 函数在 Windows 7 上不起作用。它适用于 0 - 2 宽度。在所有情况下都使用 PS_SOLID 笔样式。
【问题讨论】:
标签: gdi
LineTo 不包括线的终点。尝试不同的端盖设置,看看是否会有所不同。
【讨论】:
它返回句柄还是 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
多次点击按钮
【讨论】: