|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Registered User
Iscritto dal: Apr 2004
Messaggi: 75
|
Cosa sono i piani di colore in una bitmap?
Cosa sono i piani di colore in una bitmap?
|
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Nov 2002
Messaggi: 160
|
Boh...
forse ti riferisci alla palette (la tavola dei colori) ?? |
|
|
|
|
|
#3 |
|
Registered User
Iscritto dal: Apr 2004
Messaggi: 75
|
Non credo sia quella,chi sa programmare in windows dovrebbe saperlo,io sto imparando leggendo il libro "Programmare Windows" di Charles Petzold,qualcuno lo ha letto?
Dove spiega come si creano le bitmap dice che bisogna specificare anche il numero dei piani di colore che deve avere,oltre alle dimensioni altezza x larghezza in pixel e il numero di bit per pixel...però non dice che bisogna creare delle tavolozze quindi i piani di colore non sono tavolozze...mah |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Nov 2002
Messaggi: 160
|
Non vorrei sbagliarmi ma forse si tratta di un errore di traduzione...
Tanto per capire meglio puoi postare un paio di righe del libro dove tratta questa cosa? |
|
|
|
|
|
#5 |
|
Registered User
Iscritto dal: Apr 2004
Messaggi: 75
|
Intanto la cosa mi sembra riguardi solo le DDB,che comunque sono importanti
------------------------------------------------------------------------------- pag. 583 Nell'EGA la memoria è organizzata in quattro "piani del colore";ciò significa che i quattro bit che definiscono il colore di ciascun pixel non sono consecutivi nella memoria.Invece,la memoria video è organizzata in modo che tutti i bit d'Intensità siano insieme,tutti i bit di Rosso siano insieme e così via.Questo certamente suona come una peculiarità della dipendenza da dispositivo che un programmatore Windows non ha bisogno di sapere,ed è + o - così.Tuttavia questi piani del colore compaiono in alcune chiamate API,quali GetDeviceCaps e CreateBitmap. pag. 585 Quando si chiama GetDeviceCaps si possono utilizzare le costanti BITSPIXEL e PLANES per ottenere l'organizzazione cromatica della scheda video. ... Per esempio,una bitmap compatibile con una VGA a 16 colori aveva quattro èpiani del colore. ------------------------------------------------------------------------------- Poi questa è una chiamata tipica a CreateBitmap CreateBitmap(cx,cy,iPlanes,cBitsPixel,&bits); //cx,cy larghezza e altezza in pixel,BitsPixel n.bit per pixel,bits //array di bit organizzati come specificato dagli altri parametri,è //la bitmap vera e propria Questa è la struttura BITMAP typedef struct { LONG bmType ;// sempre a 0 LONG bmWidth; LONG bmHeight; LONG WidthBytes; //lo calcola Windows non serve assegnare LONG bmPlanes; //? LONG bmBitsPixel; LPVOID bmBits; }BITMAP, * PBITMAP; e questa si usa così,si crea un handle a bitmap ed una struttura bitmap HBITMAP hBitmap; BITMAP bitmap; riempio i campi della struttura e poi hBitmap = CreateBitmapIndirect(&bitmap); però comunque il problema è che il campo planes della struttura lo devo riempire io e cosa ci metto ?? Questa funzione sotto riempie automaticamente i campi della struttura GetObject(hBitmap,sizeof(BITMAP),&bitmap); però il primo argomento è un handler a bitmap,che si ottiene solo con CreateBitmap o CreateBitmapIndirect come valore di ritorno e per chiamarle è necessario dar loro in pasto il numero di piani di colore...siamo sempre lì... Planes che valore deve avere e cosa sono i piani di colore? Questo dipende dalla scheda video evidentemente,quindi risolvo tutto usando le DIB,ma il libro dice che le DDB sono comunque importanti e bisogna saperle usare...mah non ho ancora capito perchè |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Dovrebbe essere una cosa del genere: le informazioni su un pixel possono esere memorizzate tutte insieme (le componenti RGB occupano 3 byte) oppure componente per componente...il rosso di tutti i pixel insieme al rosso di tutti i pixel e così via...
Nella stragrande maggioranza dei casi dovrebbe avere valore 1 |
|
|
|
|
|
#7 |
|
Registered User
Iscritto dal: Apr 2004
Messaggi: 75
|
Non ho capito bene,forse intendi dire che posso miscelare fra loro più colori invece che solo 3 come per l'rgb?
O forse che ogni piano ha una componente del colore del pixel es. voglio determinare il colore del pixel (0,0) con 4 piani del colore in cui nei primi tre ci sono i valori rosso,verde e blu e nel quarto l'inensità.Per scrivere il colore del pixel (0,0) devo scrivere un valore all'inizio di ognuno dei quattro piani e il valore deve essere uguale a BITS PER PIXEL / NUMERO DI PIANI quindi se uso 32 bits per pixel viene 32/4 = 8 e li devo scrivere all'inizio di ogni piano quindi il primo all'inizio della bitmap,il secondo deve essere distante (BITSPERPIXEL / NUMEROPIANI)*DIMENSIONEBITMAPX*DIMENSIONEBITMAPY bits = CX*CY bytes Boh.. |
|
|
|
|
|
#8 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Quote:
|
|
|
|
|
|
|
#9 |
|
Registered User
Iscritto dal: Apr 2004
Messaggi: 75
|
grazie
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:02.



















