How to open Color and Font Dialog box using WPF?

前端 未结 2 386
Happy的楠姐
Happy的楠姐 2021-01-13 12:06

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 13:04

    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.

提交回复
热议问题