Oppure

Loading
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:

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
19/04/10 17:08
TronSoft
Ehm... Ragazzi... Scusate ancora...
Io ho provato ad incollare il codice proposto da Thejuster sia quello di Il Totem...
Ma (a parte che non sapevo bene dove incollarlo...) naturalmente appena lo provo mi dà errori su errori...
Errori che io non so interpretare, ovviamente, essendo, lo ripeto, dilettante e nuovo a VB 2008.
Chiedo troppo se mi aspetto un esempio funzionante, sotto forma di progetto VB...?
Non è che potete mandarmelo? Se è così elementare per voi, che vi costa? Saranno poche righe di codice... Ma almeno avrete verificato che funziona, prima di mandarmelo, no?
;-)
Grazie ancora,
A.
aaa
19/04/10 17:52
Thejuster
Di solito non siamo persone che danno sorgenti pronti all'uso.

perchè così facendo, dovremmo soddisfare la richiesta di tutti quelli che chiederebbero aiuto.

In questo caso dovevi provarci,
se non ti riusciva significa che non sei preparato per ciò che intendi fare di conseguenza
questo sorgente per te un passo molto avanzato e capirai ben poco.

siccome mi sento particolarmente buono oggi lol ti ho fatto il sorgente
nonostante che odio il vb.net >_>

cmq

ascolta un suggerimento da amico.
questa volta ti abbiamo aiutato nel sorgente,
ma la prossima volta non ti potremmo aiutare nel completare un tuo programma.

se hai bisogno di aiuto su una determinata cosa o funzione ben venga
altrimenti no.

Se sei nuovo ti consiglio vivamente di andare qui

totem.altervista.org/guida/versione2/…

il sito di totem con una bellissima guida al vb.net
la migliore in rete.
ed inizi a studiare seriamente il vb.net

saluti :k:

Edit:
ho modificato il sorgente l'animazione al click non mi piaceva :rotfl:
ho messo solo un cerchietto per mostrare dove avviene il click usando l'offset

PS: rinomina l'immagine in mano.png e mettila in C:\mano.png per testarlo.
:rotfl:
Ultima modifica effettuata da Thejuster 19/04/10 18:04
mire.forumfree.it/ - Mire Engine
C# UI Designer
20/04/10 6:58
TronSoft
Ragazzi, ringrazio tutti per i consigli e la pazienza dimostrata, in particolare Thejuster che mi ha fornito un esempio funzionante e risolutivo, sul quale studierò e che costituirà in qualche modo una base di partenza per affrontare VB 2008.
;-)
Ultima domanda, anzi due...
Sapete indicarmi una procedura analoga per visualizzare un cursore animato (formato ANI), come quello in allegato, da usare quando il programma svolge un'operazione lunga (come la vecchia clessidra, per capirci)? Con VB 6 e le funzioni di VBAccelerator lo facevo... :-(
E poi come faccio a visualizzare form non rettangolari (ad esempio della forma di una sagoma nera su sfondo bianco in una bitmap)? Anche questo facevo... :-(
Ecco, se mi mandate a quel paese posso anche capirlo... Ma se non ve la sentite di darmi risposte dettagliate, almeno potreste indirizzarmi verso siti che abbiano trattato gli argomenti e che abbiano le soluzioni?... Io non ne ho trovati...
Grazie ancora e scusate la petulanza.
A.
P.S.: ma VB 2010 Express Ed. è solo in inglese?...
aaa
20/04/10 7:28
salva94
però per argomenti diversi credo che dovresti aprire un'altro post..
aaa
20/04/10 7:36
Thejuster
Postato originariamente da salva94:

però per argomenti diversi credo che dovresti aprire un'altro post..


si in anzitutto, noi intendiamo aiutarti.
nelle guida di totem spiega anche come fare questa cosa.

poi ti consiglio di leggere il regolamento

pierotofy.it/pages/extras/forum/16/28972-leggere_prima_di_postare/

per l'animazione del mouse
ti basta usare la stessa funzione.
solo che in asso di tempo cambia immagine in continuazione
magari sfrutta un timer.

per il form senza bordi e uno dei primi argomenti che vengono trattati dai newbie.

se sfogli la sezione sorgenti trovi tanti esempi su come avere un form senza bordi.

la cosa cambia se intendi fare un detect pixel per pixel per osservare dove l'immagine sia trasparente, e muovere il form solo sull'immagine e non dov'è vuota.

cmq apri un'altro topic per altri problemi perché stiamo sporcando il topic. e qualcun'altro interessato all'argomento potrebbe avere problemi nella lettura. :k:

mire.forumfree.it/ - Mire Engine
C# UI Designer
20/04/10 9:06
TronSoft
Ops! Scusate...
8-|
aaa