问题可以详细描述一下么?不太理解……
有两点 ,第一个是文字只有边框没有填充色的镂空字,或者换句话说是只有线框。
第二,是镂空字,在内部产生阴影。
@混沌奇迹: 意思还是没有完全理解,根据目前理解的意思,有两种方案,一种要从图形学着手,将文字转成图,扫描文字点阵,给文字绘制边框,同时去除文字自身,再进行阴影处理。还有一种就直接使用镂空字体。关于问题的理解还需要进一步探讨……
@WuRang: 就是直接使用镂空字体有什么方法么
@混沌奇迹: - -你都找到这个了还需要问么http://msdn.microsoft.com/zh-cn/library/ms745816.aspx ,改一改就能用了
前台:
<Canvas> <Path Stroke="Blue"> <Path.Data> <PathGeometry x:Name="myGeo"> </PathGeometry> </Path.Data> </Path> </Canvas>
后台:
public MainWindow() { InitializeComponent(); CreateText(); } public void CreateText() { System.Windows.FontStyle fontStyle = FontStyles.Normal; FontWeight fontWeight = FontWeights.Medium; //if (Bold == true) fontWeight = FontWeights.Bold; //if (Italic == true) fontStyle = FontStyles.Italic; // Create the formatted text based on the properties set. FormattedText formattedText = new FormattedText( "测试文本", CultureInfo.GetCultureInfo("en-us"), FlowDirection.LeftToRight, new Typeface( new FontFamily("黑体"), fontStyle, fontWeight, FontStretches.Normal), 48, System.Windows.Media.Brushes.Black // This brush does not matter since we use the geometry of the text. ); // Build the geometry object that represents the text. Geometry _textGeometry = formattedText.BuildGeometry(new System.Windows.Point(0, 0)); // Build the geometry object that represents the text hightlight. //if (Highlight == true) //{ // _textHighLightGeometry = formattedText.BuildHighlightGeometry(new System.Windows.Point(0, 0)); //} myGeo.AddGeometry(_textGeometry); Geometry _textHighLightGeometry = formattedText.BuildHighlightGeometry(new System.Windows.Point(0, 0)); // myGeo.AddGeometry(_textHighLightGeometry);
@WuRang: 呃。。菜鸟菜鸟,我两个问题都是你回答的 谢谢了