Newsgroup: it.comp.lang.visual-basic
Titolo: Colori diversi su una PictureBox

Ho disegnato una immagine a 16 milioni di colori con PaintShopPro.
Ho visto che tale immagine conteneva meno di 256 colori
(erano 244) ed ho chiesto a PaintShopPro di ridurla 
con la funzione "Decrease Color Depth" > "X Color (4/8 bit)"
E l'immagine ottenuta e salvata mi è ora segnalata
da qualsiasi programma di disegno come avente
una profondità di colore di 256. Tutto OK quindi.
Questo quello che ho fatto, anche se non sono sicuro 
possa causare il problema di colori su una PictureBox
che vado a segnalare.
----------------------------
Ho VB 5.
Quando carico tale immagine su una PictureBox
con la mia risoluzione video a 256 colori,
i colori della immagine mi appaiono diversi e 
per controllo con la funzione Point (o l'API GetPixel) 
in run-time riscontro che i colori
effettivamente non sono quelli della immagine originale.
Metto la risoluzione video a 65.000 colori
e ripeto il caricamento su una PictureBox.
Ancora colori differenti dall'immagine originale 
(e differenti anche da quelli che riscontrati 
con il controllo quando la risoluzione era a 256)
Metto la risoluzione video a 16 milioni colori
e finalmente rispondenza completa di colori.
---------------------------
Ora,
visto che un programma come il comunissimo MS Paint
o PaintShopPro (e credo qualsiasi altro),
pur con la scheda video impostata a soli 256 colori,
mi fanno vedere regolarmente la mia immagine come 
è effettivamente,
perchè il controllo PictureBox me la va a cambiare
(ripeto con la funzione "Point" ottengo altri colori,
che sono simili, ma comunque diversi,
ed io ho bisogno ovviamente della esatta rispondenza...)
se la scheda video è a 256 o 65.000 colori?
Ho provato a mettere nelle propietà del Form1 
che ospita la Picturebox la propietà Palette su Custom
e come relativa immagine gli ho propio caricato
l'immagine in questione: nessun risultato (come
se questo intervento sulla propietà Palette
non lo avessi fatto).
--------------
A questo punto due domande:
c'è un modo per vedere esattamente una immagine
a 256 colori su una PictureBox
con la scheda video impostata a 256,
come anche lo stupido MS-Paint è in grado di fare?
Ed anche una seconda domanda,
a cosa serva la propietà Palette di un Form
se non sortisce effetti sulle immagini caricate
sulle PictureBox che ospita?
Nota:
ho sbagliato qualche passaggio nel caricamento
in design-time della immagine (propietà "Autoredraw" 
del Form e della PictureBox entrambi ovviamente su True...)?
Ha influito il modo con cui ho ottenuto tale immagine,
descritto all'inizio?
----------------------
Grazie a chiunque mi fa vedere con esatta rispondenza di colori
una immagine di 256 colori in un programma di VisualBasic
con la scheda video impostata a 256 colori.
Andrea
 

Credo che l'immagine che hai abbia una palette diversa da quella
standard.
La PictureBox non mi pare gestisca palette personalizzate, ma solo
quella standard di Windows. A 16 mil/col il concetto di palette non
esiste più, e quindi l'immagine la vedi bene.
Quando riduci i colori di una immagine che devi usare per picture,
barre e pulsanti non usare una palette ottimizzata ma quella di
Windows.
In alternativa puoi usare, in sostituzione della PictureBox,
componenti di terze parti; ma temo che free ci sia ben poco.
-> GbC|
www.gbcweb.com


E' assurdo ma sembra così,
ma in questo caso significa che non è
possibile caricare immagini con altre palette...
ed allora come si fa a capire che l'utente sta caricando
una immagine con palette non standard e poterlo
avvisare che i colori che vedrà non saranno quelli dell'immagine vera?
E' come tendergli una trappola...