Nauč se s námi víc. Využij 50% bonus na e-learningové kurzy.
Pouze tento týden sleva až 80 % na e-learning týkající se Javy
Avatar
rwn
Člen
Avatar
rwn:18.2.2014 21:31

Zdravím, teprve začínám s WPF, tak nevím jestli na to jdu vůbec dobře. Chtěl bych si udělat tlačítko, při jehož kliknutí se otevře dialog s barvami a po vybrání se to nastaví jako pozadí tlačítka. Kvůli dialogovému okno teda načítám z knihovny System.Window­s.Forms.dll. Zatím to mám takto:

private void colorButton_Click(object sender, RoutedEventArgs e)
{
      System.Windows.Forms.ColorDialog dlg = new System.Windows.Forms.ColorDialog();
      if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
      {
            colorbutton.Background = Brushes.dlg.Color;
      }
}

Takhle bych si to představoval, ale to nefunguje, problém je v tom Brushes., přitom kdybych tam napsal třeba Brushes.Red, tak by to fungovalo. Tak nějak nevim jak mu říct, že chci tu konkrétní zvolenou barvu. Nebo existuje nějaký lepší způsob na to?

Editováno 18.2.2014 21:34
Odpovědět
18.2.2014 21:31
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na rwn
Jan Vargovský:18.2.2014 22:03

co napsat jen dlg.Color ?

 
Nahoru Odpovědět
18.2.2014 22:03
Avatar
rwn
Člen
Avatar
rwn:18.2.2014 22:06

To by házelo chybu:

Cannot implicitly convert type 'System.Drawing.Color' to 'System.Windows.Media.Brush'
Nahoru Odpovědět
18.2.2014 22:06
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na rwn
Jan Vargovský:18.2.2014 22:08

Tak new SolidColorBrush(dlg­.Color)

Editováno 18.2.2014 22:09
 
Nahoru Odpovědět
18.2.2014 22:08
Avatar
rwn
Člen
Avatar
Odpovídá na Jan Vargovský
rwn:18.2.2014 22:21

To jsem také zkoušel, ale píše to pak chybu se špatným argumentem.

Argument 1: cannot convert from 'System.Drawing.Color' to 'System.Windows.Media.Color'
Nahoru Odpovědět
18.2.2014 22:21
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na rwn
Jan Vargovský:18.2.2014 22:27

ColorDialog je ve formech, takže to musíš přepsat na Color ve WPF.

System.Windows.Media.Color.FromArgb(dlg.Color.A, dlg.Color.R, dlg.Color.G, dlg.Color.B);

Btw, tohle je všechno hledání na internetu na 5 sekund.

 
Nahoru Odpovědět
18.2.2014 22:27
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
rwn
Člen
Avatar
Odpovídá na Jan Vargovský
rwn:18.2.2014 22:37

Což o to, já to na internetu najdu, ale většinou to neřeší konkrétní situaci a nedaří se mě to předělat na můj problém. Nakonec jsem to vyřešil takto:

private void colorButton_Click(object sender, RoutedEventArgs e)
{
    System.Windows.Forms.ColorDialog dlg = new System.Windows.Forms.ColorDialog();

    if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    {
       string strColor = System.Drawing.ColorTranslator.ToHtml(dlg.Color);
       colorbutton.Background = new SolidColorBrush((Color)ColorConverter.ConvertFromString(strColor));
    }
}

Každopádně ale děkuji za snahu. :)

Nahoru Odpovědět
18.2.2014 22:37
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na rwn
Jan Vargovský:18.2.2014 23:13

Dost nešťastné řešení ti řeknu.

 
Nahoru Odpovědět
18.2.2014 23:13
Avatar
rwn
Člen
Avatar
Odpovídá na Jan Vargovský
rwn:19.2.2014 0:26

Máš pravdu no, čím delší dobu se na to dívám, tím se mě to víc nelíbí, nakonec jsem se tedy vratíl k předchozímu návrhu, ještě jednou děkuji. :)

Nahoru Odpovědět
19.2.2014 0:26
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Avatar
Odpovídá na rwn
Michal Žůrek - misaz:19.2.2014 6:33

proboha jak tě toto napadlo?

 
Nahoru Odpovědět
19.2.2014 6:33
Avatar
rwn
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
rwn:19.2.2014 9:28

Byl to asi první způsob, který jsem našel na internetu co mě fungoval, ale tak naštěstí jsem ho nakonec nepoužil..

Nahoru Odpovědět
19.2.2014 9:28
Co můžeš naprogramovat dnes, neodkládej na zítřek.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.