Barre di colore
Esempio: N = 30, soglia = k*N/8 = k*3.75
0 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9
3.75 7.5 11.25 15 18.75 22.5 26.25 Poiché la larghezza dell’immagine potrebbe non essere un multiplo di otto (in numero di pixel) è opportuno calcolare in floating point il valore di soglia che determina il passaggio da un colore all’altro
if (indice_di_colonna > soglia) {
cambia colore;
aggiorna la soglia;
}
Barre di colore:come rappresentare i colori?
I: assegnando direttamente i valori dei colori primari
Esempio (magenta):
PIXEL(immagine,i,j).red = 255;
PIXEL(immagine,i,j).blue = 255;
PIXEL(immagine,i,j).green = 0;
Barre di colore: come assegnare i colori?
II: definendo una struttura di tipo COLORTRIPLE per colore, inizializzandola al momento della definizione, e poi assegnando tale struct
Esempio (magenta):
void f (...) {
COLORTRIPLE magenta = { 0, 255, 255 };
...
PIXEL(immagine,i,j) = magenta;
...
Barre di colore: come assegnare i colori?
III: creando una tabella di colori mediante un vettore di strutture di tipo COLORTRIPLE e poi (v. slide seguente...)...
Esempio:
void f (...) {
COLORTRIPLE colori[8] =
{ { 0, 0, 0 }, /* nero */
{0, 0, 255}, /* rosso */
{... } ...
{ 0, 255, 255 }, /*magenta */
...
Barre di colore: come assegnare i colori?
III: ... e poi assegnando il colore corretto calcolando l’indice in funzione della posizione orizzontale del pixel
Esempio:
void f (...) {
double larghezza_barra;
int indice_barra_di_colore, indice_colonna;
...
larghezza_barra = immagine.width / 8.0;
indice_barra_di_colore =
(int) indice_colonna / larghezza_barra;
PIXEL(immagine,i,j) = colori[indice_barra_di_colore];
Creazione dell’immagine vuota
No:
immagine.height = atoi (argv[2]);
immagine.height = atoi (argv[3]);
I campi height e width sono inizializzati dalla funzione CreateEmptyBitmap
Sì:
immagine = CreateEmptyBitmap (atoi (argv[2]), atoi (argv[3]));
for (i = 0; i < immagine.height; i++) for (j = 0; j < immagine.width; j++) ...