Boa tarde, Tenho um conjunto de pontos (calculados pelo programa, ou seja, mudam de valor dependendo dos dados de entrada) e gostaria de desenhar uma linha passando por eles dentro de um Userform. Para isso estou usando o seguinte código: Option Explicit
Private Declare Function GetDC& Lib "user32" (ByVal hWnd&)
Private Declare Function LineTo& Lib "gdi32" (ByVal hDc& _
, ByVal x&, ByVal y&)
Private Declare Function MoveToEx& Lib "gdi32" _
(ByVal hDc&, ByVal x&, ByVal y&, lpPoint As POINTAPI)
Private Declare Function GetActiveWindow& Lib "user32" ()
Private Type POINTAPI
x As Long
y As Long
End Type
Private hDc As Long
Private Sub DrawLine(ByVal X1&, ByVal Y1&, ByVal X2&, ByVal Y2&)
Dim pt As POINTAPI
MoveToEx hDc, X1, Y1, pt
LineTo hDc, X2, Y2
End Sub
Private Sub UserForm_Activate()
hDc = GetDC(GetActiveWindow)
Dim i As Byte
DoEvents
'Apenas um exemplo
DrawLine 0, 0, 100, 100
End Sub Minhas dúvidas são: 1) Esse código é apropriado? Existe algum jeito mais fácil? 2) Como fazer a conversão de pixels/pontos para que quando eu mande andar Me.InsideHeight, por exemplo, ele ande para o final do userform? 3) Como faço para que cada ponto tenha, ao seu lado, um label com suas coordenadas, sendo que o número de pontos pode variar dependendo dos dados de entrada? 4) Como usar shapes como retangulo e triangulo? Não sei mexer muito bem com API, desculpem se falei besteira. Desculpem também qualquer tipo de erro quanto as regras do fórum, sou novo por aqui! Valeu galera!