Grafica ad alte prestazioni in VB
|
Halftone (Error diffusion)
 |
Filtro "Emboss"
 |
Gestione istogrammi
 |
Disegno (Curve Bezier)
 |
Animazione effetto "acqua"
 |
Selezione colore
 |
|
Esempio di animazione
96 fps (eseguibile)
27 fps (in progettazione)
Pentium III a 800 MHz
Effetto su 100x50 (pixel)
|
|
Fuoco (GIF, 325 Kb)
|
|
In questo progetto sono state realizzate due classi utili per gestire la grafica: clsGFX_2D e clsGFX_API
La prima classe è l'applicazione pratica delle conoscenze ottenute frequentando il corso di Elaborazione e Trasmissione delle Immagini (Ing. Informatica di Genova).
Si è partiti da alcune classi prelevate dal web, che fornivano metodi per l'accesso diretto in memoria per la manipolazione dei
singoli byte delle immagini. Appoggiandosi a questa base sono stati implementati molti algoritmi per la grafica:
- Estrazione delle informazioni su tinta, intensità e luminanza (hue, saturation, luminance)
- Conversione di un'immagine in una simile con colori limitati e senza sfumature (Halftone con "Dithering" o "Error Diffusion")
- Inversione delle singole componenti cromatiche
- Dissolvenza
- Conversione a B/N (due metodi)
- Ribaltamenti, rotazione e ridimensionamento
- Filtri (Personalizzato, Blur, Soften, Sharpen, Emboss, Gaussian Average, Smoothing, ...)
- Rilevamento dei bordi (Edge detection)
- Vari effetti di animazione (fuoco non disponibile open source)
- Disegno (punti, linee, cerchi, curve di Bezier)
- Sistema di troncamento delle linee al di fuori di un'area (Parametric Clipping Mode e Cohen-Sutherland)
- Recupero degli istogrammi per tutte le componenti colore
- Equalizzazione dell'istogramma colore
E' stato creato quindi un programma che testa tutte le funzioni disponibili. Nel programma è presente anche un sistema per la selezione dei colori
che permette di scegliere varie modalità di selezione.
L'algoritmo per generare le animazioni del fuoco non è ancora reso pubblico. Si possono vedere gli effetti nell'eseguibile, ma il
codice corrispondente è stato rimosso dai sorgenti.
La seconda classe è un "guscio" delle funzioni presenti nelle Api Win32.
Il suo utilizzo consiste nell'associare la classe ad un particolare hDC di una finestra e poi richiamane i metodi (semplificati) per gestire
la grafica.
Sono presenti funzioni per:
- copiare blocchi di bit (copia diretta, con trasparenze, con allargamenti)
- impostare la scala (pixel, cm, inch, ...), l'origine e la direzione degli assi X e Y
- disegnare (linee, rettangoli, curve di bezier, ellissi, regioni, spicchi, ...)
- impostare i parametri di desegno (colori, trasparenze, ...)
- gestire le "regioni" personalizzate
- recuperare le capacità del dispositivo legato all'hDC
- stampare un testo (personalizzazione dei colori, del font, trasparenze, clipping, ...)
Questa classe è sicuramente meno performante rispetto ad usare direttamente le funzioni Api, ma il suo utilizzo è
giustificato dal fatto che tutte le risorse sono rilasciate correttamente (penne, pennelli, font, handle,...).
Inoltre la situazione dell'hDC viene sempre ripristinata al momento del suo rilascio.
Fatene buon uso!
Collegamenti:
Sezione download
|
|