PRINCIPALE > LISTA DELLE AREE DI DISCUSSIONE > VISUAL BASIC: DOMANDE GENERALI > MESSAGGIO

Eseguire una ricerca veloce nell' archivio delle risorse di Visual Basic Italia®: 

Preso dall'archivio...

Premere il pulsante sotto per accedere direttamente ad un articolo o ad un esempio preso in modo casuale dall'archivio.

Ultimo e-book pubblicato:

"INTRODUZIONE AI CSS"

Lo scopo del CSS language è quello di controllare lo stile dei vari elementi che concorrono a formare un
documento HTML.
Si può operare in tre modi collegamento ad un foglio di stile esterno;definizione degli stili all'inizio
del documento utilizzo della proprietà style all'interno di un Tag HTML (embedded style). Questo e-book introduttivo
servirà per apprendere tali nozioni fondametali dei fogli di stile.


Prezzo: € 0.0.

Presentazione:
REAL SOFTWARE RILASCIA LA VERSIONE 5.0 di REALbasic per Windows






Gorizia, 5 maggio 2003 - Active, distributore in esclusiva di REALSoftware, Austin, Tx, annuncia la disponibilità di REALbasic 5.0 per Windows, uno strumento per lo sviluppo semplice da usare che permette agli utenti Windows di tutti i livelli di creare applicazioni personalizzate e di compilarle sia per la piattaforma Windows che per quella Macintosh.
[>>]

http://www.active-software.com

Contatti. Utilizzare l'email generica per domande relative al sito:
Porre domande relative al sito
oppure scrivere ad un responsabile di area.
Responsabile del sito: >Andrea Martelli
Responsabile area "Corso di VB":
> Giorgio Abraini

Messaggio



Bitmap e memoria
Antonios 07/08/2005
Difficoltà: Difficile

Salve a tutti,
stavo cercando di capire come decodificare una immagine bmp.
Fin ora ho capito come "funziona" quella a 24bit di colore, ho capito come
trovare le dimensioni della stessa e come sono disposti nel file i 3 Byte per i colori.
Sto cercando di fare un programma che compia operazioni grafiche 3d:
peradesso posso disegnare punti linee cerchi e rettangoli nello spazio.
Inoltre su queste figure geometriche posso effettuare traslazioni e rotazioni.
Ora riesco a caricare anche immagini bmp a 24bit e su queste voglio farci le stesse operazioni
di rotazione e traslazione per usarle a mo di texture.
Ora sto notando che pur avendo un pc abbastanza nuovo
per caricare delle bmp di grandi dimensioni, passa parecchio tempo (anche un secondo).
Sto usando la Sub sotto, che legge i 3 Byte del colore uno alla volta...
Sto usando VB6.

D1) Non potreste cortesemente suggerirmi un modo per velocizzare il caricamento in memoria?

D2) Se può servire a velocizzare...come si fa a dichiarare un tipo di dati di 3byte invece che
di 1(byte) o 2(integer) o 4(long) Byte e leggere direttamente i gruppi a 3 alla volta?

D3) C'è un modo per gestire la memoria in VB senza usare i lenti array in quanto anche dopo che
ho caricato la bmp nell array, per visualizzarla a video ci si impiega sempre un bel po di tempo...(e nn
sto facendo nessuna operazione 3d)?

D4) Come decodifico le bmp a 8bit che sono piu piccole in dimensione e con
sufficiente informazione sul colore (che dovrebbero essere gestibili piu rapidamente)?

D5) Per prova ho creato una bmp a 8bit di un solo pixel, ma occupa 2kbyte quasi....che
altre info ci sono dentro e come si fa capirci qualcosa?qualche guida?

Grazie a tutti
ecco la sub:

Sub CARICABMP(nome$)

Open nome$ For Binary As 1

Dim Intestazione(54) As Byte
Dim R As Byte
Dim G As Byte
Dim B As Byte

rem qua ci sono le info della bmp

For T = 1 To 54
Get #1, T, Intestazione(T)
Next T

Rem calcolo le dimensioni
Lunghezza = Intestazione(19) * 256 ^ 0 + Intestazione(20) * 256 ^ 1 + Intestazione(21) * 256 ^ 2 + Intestazione(22) * 256 ^ 3
Larghezza = Intestazione(23) * 256 ^ 0 + Intestazione(24) * 256 ^ 1 + Intestazione(25) * 256 ^ 2 + Intestazione(26) * 256 ^ 3


For LNZ = Larghezza To 1 Step -1
For LGZ = 1 To Lunghezza Step 1

Get #1, , B
Get #1, , G
Get #1, , R
IMG(LNZ, LGZ) = CLng(R) * 256 ^ 0 + CLng(G) * 256 ^ 1 + CLng(B) * 256 ^ 2:rem qua c'è il colore
Next
Next
Close 1

Rem ho caricato in memoria la mappa di Byte nell array
rem ora lo mostro a video

For LNZ = 1 To Larghezza
For LGZ = 1 To Lunghezza
Schermo.PSet (LGZ * 15, LNZ * 15), IMG(LNZ, LGZ): 'RGB(R, G, B)
Next
Next

End Sub