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