Avatar
rwn
Člen
Avatar
rwn:

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ý:

co napsat jen dlg.Color ?

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

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ý:

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:

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ý:

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  +1 18.2.2014 22:27
Avatar
rwn
Člen
Avatar
Odpovídá na Jan Vargovský
rwn:

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ý:

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

 
Nahoru Odpovědět  +1 18.2.2014 23:13
Avatar
rwn
Člen
Avatar
Odpovídá na Jan Vargovský
rwn:

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):

proboha jak tě toto napadlo?

Nahoru Odpovědět 19.2.2014 6:33
Nesnáším {}, proto se jim vyhýbám.
Avatar
rwn
Člen
Avatar
Odpovídá na Michal Žůrek (misaz)
rwn:

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.