26/02/18 14:17
Carlo
Programmo da un po' in VB.net, e con i controlli standard non ho problemi, però sono anche curioso di esplorare altre possibilità.
Per esempio tracciare una linea sul form è semplice:
oppure:
e non solo....
Con le API come si farebbe?
Sono riuscito ad usare l'API gdi32, ma non riesco a gestire il colore
In un modulo ho dichiarato l'API usando gli Integer, per la compatibilità con VB.net:
e nel form ho scritto:
La riga tracciata è sempre e solo nera anche se imposto un colore nella proprietà ForeColor del form
Ho anche provato l'API:
Il pixel viene visualizzato nel colore voluto.
Per esempio tracciare una linea sul form è semplice:
Dim G As Graphics = Me.CreateGraphics Dim pen As New Pen(Color.Black) G.DrawLine(pen, 0, 0, 300, 300)
oppure:
Using pen As New Pen(Color.Blue), formGraphics As Graphics = Me.CreateGraphics() formGraphics.DrawLine(pen,300, 300, 0, 0) End Using
e non solo....
Con le API come si farebbe?
Sono riuscito ad usare l'API gdi32, ma non riesco a gestire il colore
In un modulo ho dichiarato l'API usando gli Integer, per la compatibilità con VB.net:
Public Structure POINTAPI Friend X As Integer Friend Y As Integer End Structure Public Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Integer, ByVal X As Integer, ByVal Y As Integer, ByRef lpPoint As POINTAPI) As Integer Public Declare Function LineTo Lib "gdi32" (ByVal hdc As Integer, ByVal X As Integer, ByVal Y As Integer) As Integer
e nel form ho scritto:
Dim grp As Graphics = Me.CreateGraphics Dim hdc As IntPtr = grp.GetHdc ' trovo l'hdc del form Dim point As POINTAPI ' usato su MoveTo, restituisce l'ultima coordinata MoveToEx(hdc, 0, 0, point) ' sposto le coordinate dove devo iniziare a tracciare la riga LineTo(hdc, 300, 300) ' disegno la riga da MoveToEx a LineTo
La riga tracciata è sempre e solo nera anche se imposto un colore nella proprietà ForeColor del form
Ho anche provato l'API:
' nel modulo Public Declare Function SetPixel Lib "gdi32" (ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer, ByVal crColor As Integer) As Integer ' nel form SetPixel(hdc, 100, 100, &HFF00FF) ' scrive un pixel viola
Il pixel viene visualizzato nel colore voluto.
Ultima modifica effettuata da Carlo 26/02/18 14:55
in programmazione tutto è permesso