Newsgroup: it.comp.lang.visual-basic
Titolo: hDC

Ciao ragazzi ho provato a ricavarmi l'hDC di un form usando GetDC e
GetWindowDC ma ogni volta il risultato è diverso da Me.hDC.
Come posso fare a ricavarmi l'hDC in modo corretto? Mi serve per ricavarmi
con sicurezza quello del Desktop.
Così ho provato sui normali forms ma il risultato è sempre errato, o almeno
diverso dalla proprietà hDC degli stessi.

 diverso dalla proprietà hDC degli stessi.
deve essere diverso :)))
hdc non è un puntatore video o qualcosa che identifichi il video della tua
finestra è un device di gestione del paint della tua finestra.Quello dei
form è semrpe uguale perchè non viene ricreato ma viene lasciato semrpe
disponibile.
Ricordati che ogni volta che ne crei uno lo devi anche cancellare.
ciao

 diverso dalla proprietà hDC degli stessi.
Sì, non ti coincidono, anche perchè Windows si rimappa a seconda delle
necessità l'hDC.
Prova a valutare il Me.hDC nell'evento Resize: ogni volta che la finestra
viene ridimensionata Me.hDC cambia... ci ho messo un'ora a capire perchè non
mi funzionava mai un disegno fatto nel resize :)
Ciao


Si grazie a tutti ma avevo risolto stamattina. Ho provato a usare lo stesso
LineTo(GetWindowDC(Me.hwnd),100,100) e mi è riuscito di disegnare sulla
form.
Poi ho provato appunto usando GetDesktopWindow per trovarmi l'hDC del
desktop e riesco anche a disegnare sul desktop.
Ora si tratta solo di riuscire a trovare un algoritmo che mi faccia capire
come fare l'effetto di gocce d'acqua.
Ricordo che tempo fa avevo trovato un programmino che una volta avviato,
dopo qualche secondo lasciava cadere sul desktop delle gocce d'acqua creando
l'effetto dell'immagine che si scioglieva.
Ma questo è tutt'altro discorso.
:)

 come fare l'effetto di gocce d'acqua.
Questo tipo di cose si fanno con le Offset-Mask.
Praticamente per ciascun fotogramma della tua onda causata dalla goccia,
crei un array che associ ad ogni offset la posizione del Pixel che deve
essere mostrato (ed eventualmente una costante di scurimento o schiarimento
del colore).
L'effetto goccia è particolarmente complesso, quindi è difficile da
spiegare.
Pensa all'effetto lente convessa, che è più semplice: ti crei un array fatto
così:
1,1 2,1 3,1 4,1
1,2 3,3 4,3 4,1
1,3 3,4 4,4 4,1
1,4 2,4 3,4 4,4
Ad ogni posizione trovi una coppia che rappresenta le coordinate X e Y del
pixel che deve essere mostrato in quella posizione. In questo piccolo
esempio, riporti i pixel centrali anche verso l'esterno e dai l'effetto
deformante tipico della lente convessa.
Per la goccia, il problema è che devi animarla. Questo si ottiene con un
array di array, sulla falsariga di quello del mio esempio, che contengono
per ogni fotogramma degli spiazzamenti diversi dei pixel.
La cosa è teoricamente semplice, ma è un casino precalcolarsi correttamente
questi spiazzamenti, ed è comunque parecchio Time-Consuming applicarli allo
schermo (sempre meglio che applicare delle formule complesse ad ogni pixel,
però).
Magari comincia con qualcosa di più semplice. La politica dei piccoli passi
è la migliore.
Ciao
*Roby*

 1,4 2,4 3,4 4,4
[Cut]
Siccome la cosa mi interessa piuttosto e anzichenň, e siccome non voglio
continuare a parlarne qui altrimenti sarei OT (e fo pure rima)... non hai un
link che approfondisca l'argomento o magari qualche consiglietto in piů?
THX!!!

 o magari qualche consiglietto in piů?
Spiacente, niente link. Se hai domande specifiche (ma proprio specifiche, se
no tocca di scrivere dei papiri), chiedi pure qui.
Ciao
*Roby*

 *Roby*

 matrice che mi hai dato.
Tu hai un rettangolo di pixel a cui devi applicare una deformazione.
Il risultato č sempre un rettangolo, ma alcuni dei pixel in esso contenuti
devono essere mostrati in posizioni diverse.
Fai conto una lente: se appoggi una lente su un foglio scritto, vedi le
lettere nella la parte centrale del foglio molto grandi, e poi diventano
piccole verso i bordi. Alcune lettere, o parti di esse,  le perdi, perchč
comunque lo spazio visibile č sempre quello e se qualcosa diventa piů
grande, il resto non ci sta piů.
La matrice che ti ho dato (era solo un esempio, e piccolissimo peraltro)
dice che pixel deve essere mostrato in ogni posizione X,Y all'interno del
tuo rettangolo di pixel.
Es:
1,1 2,1
2,1 2,2
E' la posizione normale. Nella matrice, in posizione 1,1 c'č per l'appunto
il puntatore a 1,1. Stessa cosa per 2,1 1,2 e 2,2.
Es2:
1,1 1,1
1,1 1,1
Questa matrice serve invece per riempire tutti e 4 i pixel della tua area
con il pixel in posizione 1,1
es:3
2,1 2,2
1,1 2,1
Questa matrice fa ruotare i pixel in senso antiorario.
E' piů chiaro ora?
Quello che devi fare, č pregenerare la matrice di deformazione, e applicarla
a ciascuno dei punti della tua area di schermo. Ovviamente l'output deve
avvenire in una nuova bitmap, per evitare di sporcare quella di partenza
durante l'elaborazione della matrice. Il risultato finale poi lo puoi
plottare dove preferisci (presumibilmente al posto del risultato iniziale).
Di queste matrici ne puoi avere anche tante, che puoi usare per simulare
differenti fotogrammi di animazione deformante di una area a video. In
questo caso perň, le matrici in sequenza devono sempre essere applicate alla
situazione video iniziale, e non al risultato della deformazione
immediatamente precedente, altrimenti si invalida tutto.
Se hai dubbi, chiedi pure.
Ciao
*Roby*

 link che approfondisca l'argomento o magari qualche consiglietto in piů?
comp.graphics.algorithms
C'č gente in gamba e disponibile.
Ciao

 piccole verso i bordi.
:) Ne sa qualcosa Escher... Ma lui ha studiato questi effetti per anni prima
di riprodurli su carta :P
Comunque leggere qualcosa dei suoi lavori potrebbe aiutare.
Ciao

 Comunque leggere qualcosa dei suoi lavori potrebbe aiutare.
Beh, forse conviene guardare qualche testo che tratti problemi di ottica:
http://www.mporzio.astro.it/~licausi/Distorsione/Distorsione.htm
Ciao
*Roby*

 Ciao
Ciauuuuuzzzzzzzzz

 E dove li trovo? Che cos'è un libro? O c'è qualcosa online?
Ecco l'esempio più calzante dell'opera di Escher.
http://www.worldofescher.com/gallery/HandWithSphere.html
Studiando l'ottica ci si imbatte in limiti dell'occhio sfruttando i quali si
ottengono degli effetti incredibili. Guarda qui ad esempio:
http://www.grand-illusions.com/movingspots.htm
Ciao
*Roby*

 
http://www.grand-illusions.com/movingspots.htm
un amico americano me l'aveva mandato con sottotitolo:
"votazione in florida. pallini bianchi gore, neri bush.
[o era il contrario ? i neri, bush... moh]
ricontare come controllo".
j,op