Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
rawen
Člen
Avatar
rawen: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ý
Tvůrce
Avatar
Odpovídá na rawen
Jan Vargovský:18.2.2014 22:03

co napsat jen dlg.Color ?

 
Nahoru Odpovědět
18.2.2014 22:03
Avatar
rawen
Člen
Avatar
rawen: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ý
Tvůrce
Avatar
Odpovídá na rawen
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
rawen
Člen
Avatar
Odpovídá na Jan Vargovský
rawen: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ý
Tvůrce
Avatar
Odpovídá na rawen
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
Avatar
rawen
Člen
Avatar
Odpovídá na Jan Vargovský
rawen: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ý
Tvůrce
Avatar
Odpovídá na rawen
Jan Vargovský:18.2.2014 23:13

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

 
Nahoru Odpovědět
18.2.2014 23:13
Avatar
rawen
Člen
Avatar
Odpovídá na Jan Vargovský
rawen: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 rawen
Michal Žůrek - misaz:19.2.2014 6:33

proboha jak tě toto napadlo?

 
Nahoru Odpovědět
19.2.2014 6:33
Avatar
rawen
Člen
Avatar
Odpovídá na Michal Žůrek - misaz
rawen: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.