2010-06-18 19 views
15

Sto cercando di aggiungere il colore nel codice C#, con il seguente codice colore, ad esempio.Impostare il colore tramite il codice colore in C#

ListTreeView.Background = new SolidColorBrush (Colors.White);

Questa è working..but voglio aggiungere questo colore come codice di colore in modo da sto aggiungere come

System.Windows.Media

Qualcuno potrebbe darmi un esempio con

System.Drawing

Quindi quello che può fare il seguente:

ListTreeView.Background = ColorTranslator.FromHtml ("# FFE7EFF2");

Questo mi dà errore; Qualche idea?

+1

qual è l'errore? –

+0

È questo WinForms o WPF? –

+0

È quel codice giusto? Come @ ho1 dice 'ColorTranslator.FromHtml ("# E7EFF2") 'funzionerà con un valore esadecimale RGB - ma hai una stringa di 8 cifre. Hai il valore alfa anche lì? – Keith

risposta

21

Non c'è un modo semplice per ottenere il colore con alfa inclusa da una stringa esadecimale in questo modo.

penso che la risposta dipende da dove stai ricevendo i valori di colore e alfa da.

Il colore RGB solo può essere analizzato da una stringa esadecimale HTML:

Color colour = ColorTranslator.FromHtml("#E7EFF2"); 

Se si dispone di un valore alfa separata si può quindi applicare questo (docs):

Color colour = ColorTranslator.FromHtml("#E7EFF2"); 
Color transparent = Color.FromArgb(128, colour); 

In alternativa si può è necessario analizzare la stringa e dividerla per convertire le coppie esadecimali in valori interi.

scusa PS scusa inglese, ma il colore dovrebbe avere sicuramente una "u" :)

+4

hai un problema? – kenny

+0

il colore con "u" è inglese, il colore senza è inglese americano ... –

+0

quindi è armatura/armatura, difesa/difesa, grigio/grigio ecc. Il punto attraversa il punto. ma mi chiedo, visto che wpf ha la sua funzione "fromArgb" ma in qualche modo non usa l'impostazione alpha corretta? perché – ThrowingDwarf

2

Penso che si potrebbe usare System.Drawing.ColorTranslator.FromHtml.

+0

Questo non è il modo giusto per farlo se si desidera (A) valori RGB, che è apparentemente quello che cerca. 'FromHtml' genererà un'eccezione se usi qualcosa tranne un colore HTML. –

+0

@John: Mi dispiace, non so di cosa stai parlando. 'Color c = System.Drawing.ColorTranslator.FromHtml (" # FFE7EFF2 ")' funziona bene e se poi faccio 'button1.BackColor = c;' renderà il pulsante un po 'di colore bluastro. Stai dicendo che è il colore sbagliato? –

+0

@ ho1: Quando uso "# FFE7EFF2" con ColorTranslator, è esattamente dello stesso colore di "# 00E7EFF2" (che dovrebbe essere invisibile poiché il canale alfa è zero, giusto?). –

7

ListTreeView non è uno standard Control fornito dal framework, quindi è necessario consultare la documentazione. In generale, però, è possibile utilizzare System.Drawing.ColorTranslator.FromHtml o System.Drawing.Color.FromArgb. Ecco come si farebbe con un controllo TreeView:

TreeView t = ... 
t.BackgroundColor = Color.FromArgb(0xff00ff00); // Fully opaque, 100% green. 
// or: 
t.BackgroundColor = ColorTranslator.FromHtml("green"); 
+0

Non penso che esista un sovraccarico di 'FromArgb' che richiede una stringa esadecimale? – Keith

+0

Ehm, mi spiace, dovrebbe essere solo un numero intero esadecimale. Colpa mia. –