Palette colori di windows e...cambiamenti

Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    kibibyte L'avatar di Luca IT
    Registrato
    Jul 2001
    Messaggi
    442

    Predefinito Palette colori di windows e...cambiamenti

    Volevo sapere se era possibile cambiare momentaneamente la pelette dei colori di Windows con una palette propria.

    Ad esempio......io mi estrapolo una palette di colori.

    Il rosso sappiamo tutti che è 255,0,0 (rgb) e corrisponde ad un numero intero che è 255 (su 16 milioni di colori)

    Facciamo finata che io invece ho a quel numero il verde....e quindi mi deve visualizzare il verde e non il rosso.....


    spero di aver reso l'idea.

    Io uso il linguaggio C.


    ciauz

  2. #2
    Amministratore L'avatar di ^SiRtA^
    Registrato
    Nov 2001
    Età
    45
    Messaggi
    13,028

    Predefinito

    Maniac credo si sia suicidato... beh, vediamo di "recuperarlo"



    Paolo

  3. #3
    tebibyte
    Registrato
    Sep 2000
    Località
    cosenza
    Messaggi
    2,926

    Predefinito

    vediamo....

    mi pare di aver capito che tu nn vuoi reimpostare la palette per un'immagine ( cioè x esempio passare da 256 0 64000 o 16 milioni di colori o viceversa...operazione necessaria x esempio se vuoi vedere correttamente delle bitmap a 32 bit mentre windows è impostato su 16 etc). Onestamente non conosco un modo diretto per fare capire a windows che x esempio il terzo byte di un COLORREF corrisponde al verde invece che al rosso, xò potresti fare una cosa del genere ( tenendo a mente che il formato di un colorref è 0x00bbggrr)



    inline COLORREF toCOLORREF(DWORD srcColor) {

    /*srcColor contiene i byte relativi ai colori RGB nelle posizioni scelte da te, in questo esempio supponiamo che il primo byte contenga il blu, il secondo il rosso ed il terzo il verde, 0x00ggrrbb*/

    return RGB((srcColor >> 8) & 0xFF,(srcColor >> 16 ) & 0xFF,srcColor & 0xFF);

    }


    in questo modo, quando dovrai andare a visualizzare il colore potrai fare x esempio:

    dc->SetPixel(x,y,toCOLORREF(myColor));


    è un modo un po brusco e sicuramente poco performante, ma in assenza di altro può andare momentaneamente bene.

  4. #4
    tebibyte
    Registrato
    Sep 2000
    Località
    cosenza
    Messaggi
    2,926

    Predefinito

    dimenticavo, tu usi il C quindi andrai a fare


    SetPixel(hDC,x,y,toCOLORREF(myColor));

  5. #5
    kibibyte L'avatar di Luca IT
    Registrato
    Jul 2001
    Messaggi
    442

    Predefinito

    Grazie per aver risposto....ma credo purtroppo che non faccia al caso mio.

    Praticamente io cercodi arrangiarmi in questo modo:

    Per la creazione uso un array a 3 dimensioni

    pippo[256][256][256]

    Con un ciclo vedo i colori che sono stati usati e quindi incremento un contatore se il colore è nuovo; inoltre creo un file ove metto il colore RGB e l'altro dove metto in sequenza il valore del contatore a cui corrisponde il colore letto.

    Così mi ritrovo con un file di dati che indica il colore dell'immagine e una file che io la chiamo palette.

    Poi a processo inverso posso ricreare l'immagine a 24bit colore.

    Come esempio di quello che voglio fare è proprio come il passaggio da 24bit colore a 8bit colore...meglio ancora 1bit colore.

    Il pgm gif animator di ulead che c'è in photo impact ho notato che fà cio'. usa al massimo 256 (standard GIF) e se uno vuole crea pure la palette....con i suoi flag.

    Quindi credo che esista una cosa del genere.....un crea palette!!!!


    PS se conosci percaso qualcuno.......sarebbe un miracolo!!!! Purtroppo io non conosco persone che trattano queste cosucce


    ciauz

  6. #6
    tebibyte
    Registrato
    Sep 2000
    Località
    cosenza
    Messaggi
    2,926

    Predefinito

    capisco, non avevo ben compreso il tuo problema ( credevo che ti servisse solo cambiare di posto i byte che compongono un colore x visualizzarli correttamente su un DC di windows). Vedo che il problema è decisamente + complesso, se mi dai qualke particolare in + sul codice che hai scritto vedo se riesco a cavarne fuori qualcosa...MSDN docet

    ciauz

  7. #7
    kibibyte L'avatar di Luca IT
    Registrato
    Jul 2001
    Messaggi
    442

    Predefinito

    Originally posted by The3DProgrammer
    capisco, non avevo ben compreso il tuo problema ( credevo che ti servisse solo cambiare di posto i byte che compongono un colore x visualizzarli correttamente su un DC di windows). Vedo che il problema è decisamente + complesso, se mi dai qualke particolare in + sul codice che hai scritto vedo se riesco a cavarne fuori qualcosa...MSDN docet

    ciauz

    unsigned char Apippo[256][256][256];
    unsigned int qta;


    void conta (byte R, byte G, byte B) {
    if (Apippo[R][G][B] != 1) {
    Apippo[R][G][B] = 1;
    qta++;
    }
    }


    Questa procedura mi conta i colori. qta diventa il valore del mio colore!!!!!!

    Dato che comunque sono in fase di progettazione.......non ho proprio scritto il codice completo.

    Comunque ho pensato che Apippo diventi una struttura
    struct Apippo {
    unsigned char flag; //testa se il colore esiste o no
    unsigned int colore; //valore di qta quando trovo un colore novo
    }

    in questo modo creo la palette.

    Come vedi è molto semplice ed intuitivo.....quindi mi sono chiesto....ma non esiste già un'API che fà questo in modo veloce ed ottimizzato?????

    ho notato che in MSDN c'è roba per la palette....ma ti ripeto...ci capisco poco......

    PS mi sono dimenticato di dirti che qesto per me è un'esercizietto, in quanto stò cercando di imparare un po' il C....e purtroppo devo farlo da solo......

    ciauz

Informazioni Thread

Users Browsing this Thread

Ci sono attualmente 1 utenti che stanno visualizzando questa discussione. (0 utenti e 1 ospiti)

Discussioni simili

  1. Stampanti laser COLORI
    By marcosaurus in forum -= Hardware generico =-
    Risposte: 8
    Ultimo messaggio: 16-06-2008, 16:10
  2. colori su xp
    By zoso in forum -= Sistemi Operativi Windows e software generale =-
    Risposte: 8
    Ultimo messaggio: 26-05-2003, 09:26
  3. Tutti i colori del Voodoo...
    By VinKo in forum -= Schede video e acceleratori =-
    Risposte: 10
    Ultimo messaggio: 16-08-2001, 03:53
  4. Cambiamenti nel forum
    By in forum -= La Piazza =-
    Risposte: 20
    Ultimo messaggio: 25-07-2000, 11:49

Tags

Regole d'invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
nexthardware.com - © 2002-2022