在WPF中将值设置为FontDialog
我正在用文本处理WPF。现在我想使用FontDialog编辑文本,但我无法将当前文本样式设置为FontDialog,因此每次调用FontDialog时文本样式都会更改。你们能帮帮我吗 这是我的代码:在WPF中将值设置为FontDialog,wpf,fonts,edit,Wpf,Fonts,Edit,我正在用文本处理WPF。现在我想使用FontDialog编辑文本,但我无法将当前文本样式设置为FontDialog,因此每次调用FontDialog时文本样式都会更改。你们能帮帮我吗 这是我的代码: System.Windows.Forms.FontDialog fontDialog = new System.Windows.Forms.FontDialog(); if (fontDialog.ShowDialog() == System.Windows.Forms.Dialog
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;
}
WPF中的字体对象与FontDialog返回的Windows窗体中的字体对象不同
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;
}
您可以创建一个新的字体对象,将当前样式的文本作为参数传递。这就是你可以做到的:
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";
}
谢谢马克·霍尔。。。但我的意思是我想将当前的文本样式设置为FontDialog。例如:我创建了新的注释文本。我调用字体对话框编辑文本,完成后单击确定。然后我再次调用字体对话框,但它设置了默认值。那么如何将文本样式设置为FontDialog?@user1276594可能我不理解,但我上面给你的代码将更改FontFamily、大小、FontWeight和FontStyle。这两个字体对象非常不同,没有一种简单的方法可以完成转换。这就是为什么我建议您查看字体选择器示例,它是一个本机wpf字体对话框。@user1276594-我想我理解他的意思。他希望下次调用时能够将删除线、下划线等设置回FontDialog。这样他就可以将WPF文本中的设置传输回FontDialog——我也在尝试做同样的事情。@JuniperAsh。我确实理解了他的意思,这就是为什么我建议使用示例文件选择器,这是一个Wpf示例。这两种字体是不同的,很难在两者的某些方面取得一致。