我正在使用文本处理WPF。现在我想使用FontDialog编辑文本,但我无法将当前样式的文本设置为FontDialog,因此每次调用FontDialog时文本样式都会更改。你能帮助我吗?
这是我的代码:
System.Windows.Forms.FontDialog fontDialog = new System.Windows.Forms.FontDialog();
if (fontDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
this.textAnnotation.Font.Size = fontDialog.Font.Size;
this.textAnnotation.Font.Name = fontDialog.Font.Name;
this.textAnnotation.Font.Underline = fontDialog.Font.Underline;
this.textAnnotation.Font.Strikeout = fontDialog.Font.Strikeout;
this.textAnnotation.Font.Bold = fontDialog.Font.Bold;
this.textAnnotation.Font.Italic = fontDialog.Font.Italic;
}
答案 0 :(得分:2)
WPF中的Font对象与FontDialog返回的Windows窗体中的Font对象不同。
你最好使用Wpf原生的东西,因为Font对象不同。 Wpf Text博客上有一个Sample Font Chooser。我建议调查一下。
类似的东西:
System.Windows.Forms.FontDialog fontDialog = new System.Windows.Forms.FontDialog();
if (fontDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
FontFamilyConverter ffc = new FontFamilyConverter();
this.textAnnotation.FontSize = fontDialog.Font.Size;
this.textAnnotation.FontFamily =(FontFamily)ffc.ConvertFromString(fontDialog.Font.Name);
if (fontDialog.Font.Bold)
textAnnotation.FontWeight = FontWeights.Bold;
else
textAnnotation.FontWeight = FontWeights.Normal;
if (fontDialog.Font.Italic)
textAnnotation.FontStyle = FontStyles.Italic;
else
textAnnotation.FontStyle = FontStyles.Normal;
}
答案 1 :(得分:0)
您可以创建一个新的Font对象,将您当前的文本样式作为参数传递。这是您可以做到的方式:
var fontDialog = new FontDialog();
fontDialog.Font = new Font(textInfo.FontFamily, textInfo.FontSize);
if (fontDialog.ShowDialog() == DialogResult.OK)
{
var selectedFont = fontDialog.Font;
textInfo.FontSize = selectedFont.Size;
textInfo.FontFamily = selectedFont.FontFamily.Name;
textInfo.FontWeight = selectedFont.Bold ? "Bold" : "Regular";
textInfo.FontStyle = selectedFont.Italic ? "Italic" : "Normal";
}