首页 新闻 会员 周边 捐助

wpf中怎么实现内阴影

0
悬赏园豆:15 [已解决问题] 解决于 2013-05-29 15:32

 在wpf中怎么实现 ,文字的内阴影,文字只有边框没有里面填充颜色

问题补充:

 没法贴图片很抱歉

混沌奇迹的主页 混沌奇迹 | 初学一级 | 园豆:70
提问于:2013-05-27 15:47
< >
分享
最佳答案
0

问题可以详细描述一下么?不太理解……

收获园豆:15
WuRang | 小虾三级 |园豆:1730 | 2013-05-28 10:37

 有两点 ,第一个是文字只有边框没有填充色的镂空字,或者换句话说是只有线框。

第二,是镂空字,在内部产生阴影。

混沌奇迹 | 园豆:70 (初学一级) | 2013-05-28 15:40

@混沌奇迹: 意思还是没有完全理解,根据目前理解的意思,有两种方案,一种要从图形学着手,将文字转成图,扫描文字点阵,给文字绘制边框,同时去除文字自身,再进行阴影处理。还有一种就直接使用镂空字体。关于问题的理解还需要进一步探讨……

WuRang | 园豆:1730 (小虾三级) | 2013-05-28 16:24

@WuRang:  就是直接使用镂空字体有什么方法么

混沌奇迹 | 园豆:70 (初学一级) | 2013-05-28 20:10
混沌奇迹 | 园豆:70 (初学一级) | 2013-05-28 20:11

@混沌奇迹: - -你都找到这个了还需要问么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 | 园豆:1730 (小虾三级) | 2013-05-29 09:15

@WuRang: 呃。。菜鸟菜鸟,我两个问题都是你回答的 谢谢了

混沌奇迹 | 园豆:70 (初学一级) | 2013-05-29 15:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册