Il modo migliore per creare il pulsante che visualizza il colore selezionato
-
21-09-2019 - |
Domanda
Avete presente quei pulsanti Color Picker con un piccolo rettangolo in esso, la visualizzazione del colore selezionato? Come in MS prodotti Office.
Vorrei implementare uno utilizzando C # / .NET. Così ho una piccola icona bella con un rettangolo rosso magenta di colore (che è quello di visualizzare il colore) e uno sfondo trasparente.
Mi vengono in mente due modi come questo potrebbe essere fatto, ma sono entrambi non molto elegante:
- Modifica l'icona usando software di grafica per avere un colore di sfondo solido al posto di trasparenza e di ridimensionarla di essere esattamente grande come il pulsante che lo contiene. Ciò consentirebbe di utilizzare TransparentColor = Manenta in combinazione con il pulsante Sfondo, tuttavia l'icona dovrebbe essere modificato ogni volta che taglia pulsante, BackColor della barra degli strumenti o qualcos'altro modifiche.
- Modifica l'icona a livello di codice ogni volta che si seleziona un nuovo colore. Avrebbe funzionato, ma sembra un po 'per complessi (per quanto riguarda lo sviluppo e le prestazioni) a me.
. Forse mi manca il modo semplice e ovvio per attuare tale tasto? Grazie in anticipo per eventuali suggerimenti / suggerimenti / ispirazione:)
Soluzione 2
Ovviamente, non v'è alcuna soluzione elegante. Ho scelto il primo, utilizzando PNG trasparenza e BackColor, con l'inconveniente di dover colorare lo sfondo png come sfondo del pannello contenente. Sembra essere meno doloroso in questo modo.
Altri suggerimenti
Si può facilmente sostituire il metodo OnPaint
e disegnare un rettangolo con qualsiasi colore desiderato.
Non vedo alcuna ragione per usare un'icona, PNG o qualsiasi altra risorsa immagine per questo. Che sembra uno spreco di risorse.
Basta disegnare le scatole dal codice, disegno i colori che sono attualmente parte della lista dei colori del controllo. Idealmente, il vostro controllo permetterà al chiamante di aggiungere i propri colori. E non richiederebbe alcuna trafficando con le immagini.
Ho appena usato un casella combinata quando ho fatto questo , ma ho disegnato una scatola di colore come io sto descrivendo owner-draw. Molto facile.