Oct 062009
Una función para tener siempre a mano, sobre todo para cuando trabajemos con hdc en memoria.
Option Explicit
Private Declare Function OleTranslateColor Lib "oleaut32.dll" (ByVal lOleColor As Long, ByVal lHPalette As Long, lColorRef As Long) As Long
Private Declare Function CreatePen Lib "gdi32.dll" (ByVal nPenStyle As Long, ByVal nWidth As Long, ByVal crColor As Long) As Long
Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal lpPoint As Long) As Long
Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long
Private Declare Function SelectObject Lib "gdi32.dll" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function LineTo Lib "gdi32.dll" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long
Public Sub DrawLine(ByVal hdc As Long, _
ByVal X1 As Long, _
ByVal Y1 As Long, _
ByVal X2 As Long, _
ByVal Y2 As Long, _
Optional ByVal Color As Long = -1, _
Optional ByVal BorderWidth As Long = 1)
Dim hPen As Long
Dim TransColor As Long
Dim OldPen As Long
If Color <> -1 Then
Call OleTranslateColor(Color, 0&, TransColor)
hPen = CreatePen(0, BorderWidth, TransColor)
OldPen = SelectObject(hdc, hPen)
End If
If X1 >= 0 Then
MoveToEx hdc, X1, Y1, 0
End If
LineTo hdc, X2, Y2
If hPen <> 0 Then
SelectObject hdc, OldPen
DeleteObject hPen
End If
End Sub