Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ciao,
sono un programmatore dilettante orfano di VB 6... (quante volte l'avete sentita questa?...) Vi scrivo con la speranza che potrete aiutarmi (anche questa, eh?).
Come faccio in VB 2008 ad impostare il cursore con una mia immagine personalizzata (vedi allegato), nota bene, a centinaia di colori e con antialias, da formati come PNG o ICO, per intenderci, e non una volgare CUR in bianco e nero!, cosa che in VB 6 facevo benissimo (grazie alle funzioni trovate nell'ottimo sito VBAccelerator, ormai però defunto, ahimé...)???
Sono giorni che mi rompo la testa, sia provando da me (ammetto di essere ancora disorientato con VB 2008...) sia cercando una soluzione in rete... Ma niente...
Potete aiutarmi?
Grazie infinite!
;-)
Antonio
Scusate... Vi ringrazio, ma... non ho capito niente!
Che dovrei fare??? Qual è la procedura da seguire, i comandi da utilizzare ecc.?
Risposte criptiche non è che mi siano d'aiuto...
Grazie ancora,
A.
Scusate... Vi ringrazio, ma... non ho capito niente!
Che dovrei fare??? Qual è la procedura da seguire, i comandi da utilizzare ecc.?
Risposte criptiche non è che mi siano d'aiuto...
Grazie ancora,
A.
ciptiche?
non è che parliamo in cript ma almeno un pò di teoria in materia serve....
o magari un pò di studio alle WinApi non farebbe male.
Un modo semplice per farlo e quello che ti ho descritto prima
altrimenti ci sono le api.
prima incapsuli un immagine in un contenitore Image,
e dopo crei il cursore sfruttando l'api CreateIconIndirect
puoi perfino usare una stringa come cursore.
al load del form
Codice sorgente - presumibilmente C# / VB.NET
Bitmap bitmap = new Bitmap(140, 25);
Graphics g = Graphics.FromImage(bitmap);
using (Font f = new Font(FontFamily.GenericSansSerif, 10))
Ti ringrazio, ma come ho dichiarato all'inizio, non solo sono un dilettante (e quindi per me api o vespe, sempre diffidente sono...) ma anche nuovo a VB 2008...
Oltretutto tu mi parli in C...!
:-(
Insomma, non sono capace di mettere a frutto le tue indicazioni... Non so di che parli!
Grazie lo stesso... Pensavo (speravo, m'illudevo...) di ottenere una risposta più semplice e chiara... Che so, un esempio...
Non è colpa tua: qui siete tutti esperti, sarò io che ho sbagliato sito...
Ciao
A.
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:
Codice sorgente - presumibilmente VB.NET
Dim bitmap AsNew 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:
Codice sorgente - presumibilmente C# / VB.NET
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:
Codice sorgente - presumibilmente VB.NET
PublicStructure IconInfo
Public fIcon AsBoolean
Public xHotspot AsInteger
Public yHotspot AsInteger
Public hbmMask As IntPtr
Public hbmColor As IntPtr
EndStructure
'Crea un cursore valido a partire da una struttura IconInfo e restituisce
'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
ReturnNew Cursor(Icona(tmp))
EndFunction
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.