How to open Color and Font Dialog box using WPF?

前端 未结 2 975
迷失自我
迷失自我 2021-01-13 12:43

I want to show the color and font dialog box in WPF .net 4.5, how to can I do? Please help me anybody.

Thnx in Advanced!

相关标签:
2条回答
  • 2021-01-13 12:48

    The best out of the box solution is using FontDialog form System.Windows.Forms assembly, but you will have to convert it's output to apply it to WPF elements.

    FontDialog fd = new FontDialog();
    var result = fd.ShowDialog();
    if (result == System.Windows.Forms.DialogResult.OK)
    {
        Debug.WriteLine(fd.Font);
    
        tbFonttest.FontFamily = new FontFamily(fd.Font.Name);
        tbFonttest.FontSize = fd.Font.Size * 96.0 / 72.0;
        tbFonttest.FontWeight = fd.Font.Bold ? FontWeights.Bold : FontWeights.Regular;
        tbFonttest.FontStyle = fd.Font.Italic ? FontStyles.Italic : FontStyles.Normal;
    
        TextDecorationCollection tdc = new TextDecorationCollection();
        if (fd.Font.Underline) tdc.Add(TextDecorations.Underline);
        if (fd.Font.Strikeout) tdc.Add(TextDecorations.Strikethrough);
        tbFonttest.TextDecorations = tdc;
    }
    

    Notice that winforms dialog does not support many of WPF font properties like extra bold fonts.

    Color dialog is much easier:

    ColorDialog cd = new ColorDialog();
    var result = cd.ShowDialog();
    if (result == System.Windows.Forms.DialogResult.OK)
    {
        tbFonttest.Foreground = new SolidColorBrush(Color.FromArgb(cd.Color.A, cd.Color.R, cd.Color.G, cd.Color.B));
    }
    

    It does not support alpha though.

    0 讨论(0)
  • 2021-01-13 13:00

    You can use classes from System.Windows.Forms, there is nothing wrong with using them. You'll probably need to convert values to WPF-specific though.

    Alternatively, you can implement your own dialogs or use third-party controls, see Free font and color chooser for WPF?.

    0 讨论(0)
提交回复
热议问题