19/04/10 16:56
Il Totem
In effetti le risposto erano tutt'altro che chiare. Inutile dire che non è possibile spiegarti proprio tutto il codice postato, perchè dovremmo ritornare indietro parecchio nella teoria e scrivere un trattato. Al massimo posso commentare brevemente quello che mi sembra di aver capito:
Questo codice è dispersivo perchè non contempla il passaggio dal tipo image al tipo bitmap. Si potrebbe riassumere in:
Carica l'immagine dal file, la pone in un oggetto bitmap, quindi crea l'icona ad essa corrispondente e la imposta come nuovo cursore.
Structure corrisponde alla Struct del VB6, mentre <DllImport> corrisponde a Declare:
Potevi dare dei nomi più significativi che Icona e InfoIcona... E ricordo che le strutture sono tipi value, perciò non necessitando di un costruttore per essere inizializzate.
Dim bitmap As New Bitmap(140, 25) Dim s As Image = Image.FromFile("C:\mano.png") Dim g As Graphics = Graphics.FromImage(bitmap) bitmap = New Bitmap(s) g.DrawImage(s, 0, 0, 50, 50)
Questo codice è dispersivo perchè non contempla il passaggio dal tipo image al tipo bitmap. Si potrebbe riassumere in:
Dim bitmap As Bitmap = Image.FromFile("C:\mano.png") Me.Cursor = CreaCursore(bitmap, 3, 3) bitmap.Dispose()
Carica l'immagine dal file, la pone in un oggetto bitmap, quindi crea l'icona ad essa corrispondente e la imposta come nuovo cursore.
Structure corrisponde alla Struct del VB6, mentre <DllImport> corrisponde a Declare:
Public Structure IconInfo Public fIcon As Boolean Public xHotspot As Integer Public yHotspot As Integer Public hbmMask As IntPtr Public hbmColor As IntPtr End Structure 'Crea un cursore valido a partire da una struttura IconInfo e restituisce 'un puntatore al cursore <DllImport("user32.dll", EntryPoint := "CreateIconIndirect")> _ Public Shared Function Icona(ByRef icon As IconInfo) As IntPtr End Function 'Ottiene delle informazioni sull'icona hIcon specificata come puntatore (o come valore 'notevole se identifica un cursore predefinito) e le pone in pIconInfo. <DllImport("user32.dll", EntryPoint := "GetIconInfo")> _ Public Shared Function InfoIcona(ByVal hIcon As IntPtr, ByRef pIconInfo As IconInfo) As Boolean End Function Public Shared Function CreaCursore(ByVal bmp As Bitmap, ByVal xHotSpot As Integer, ByVal yHotSpot As Integer) As Cursor Dim tmp As New IconInfo() 'Crea una nuova struttura IconInfo riguardando l'icona 'ottenuta dalla funzione bmp.GetHicon() e la mette in tmp InfoIcona(bmp.GetHicon(), tmp) 'Coordinate del'"hot spot" del cursore. Presumo che sia il punto che "fa click" tmp.xHotspot = xHotSpot tmp.yHotspot = yHotSpot 'False indica che si tratta di un cursore e non una semplice icona tmp.fIcon = False Return New Cursor(Icona(tmp)) End Function
Potevi dare dei nomi più significativi che Icona e InfoIcona... E ricordo che le strutture sono tipi value, perciò non necessitando di un costruttore per essere inizializzate.
aaa