原文:WPF中制作立体效果的文字或LOGO图形

较久之前,我曾写过一篇:“WPF绘制党徽(立体效果,Cool) ”的博文。有感兴趣的朋友来EMAIL问是怎么制作的?本文解决此类问题。

有时,为了美观的需要,我们可能需要在应用程序中制作一些看上去很酷的3D效果,比如下面的效果:

这是一种立体的纯文字效果,或许你可以在网上找到相关工具自动生成图片,但如果是需要生成矢量的XAML图形文件,这样的工具少之又少。关于3D文字的问题,你可以参见大名鼎鼎的Charles Petzold在MSDN上的两篇文章“三维网格几何体”(http://msdn2.microsoft.com/zh-cn/magazine/cc163449.aspx)及“WPF 中的三维文字”(http://msdn2.microsoft.com/zh-cn/magazine/cc163349.aspx)。

更多的情况是:可能需要根据用户的不同要求,按用户提供的企业标准文字或LOGO标识来进行绘制。
比如,我在从事月历设计时,就有用户需要设计一个“福”字,他们想将之放进月历中:

这个“福”字原来是由用户以TIFF图片文件格式提供。

上面“春”字最后生成的XAML代码(Spring.Xaml)占空间约22K,代码太长,从略。
而“福”字最终生成的XAML代码(ChineseFu.Xaml)更多,达42K。
从上面的代码可以看出,有许多东西(比如渐变颜色)是可以共用的,可以使用资源的方式,使上面的代码变得更精简,但目前尚无专业的软件工具可以做到自动完成这一过程,相信随着WPF,SilverLight及XAML的推广,上述情况会有所改观。

你可以使用各种矢量绘图软件来将图片文字矢量化,比如使用常用的Illustrator, CorelDraw, FreeHand等。我比较喜欢使用Illustrator,当然这只是个人喜好而已。你也可以使用你比较喜欢的设计工具。

如果最终想要生成XAML文件,与你的其他WPF或SilverLight程序配合,那么,你可以使用微软的Expression Blend。做这件事可能需要考验你的耐性。因为目前为此,Expression Blend的某些绘图功能还不够完善。随着时间的推移,相信它会越来越好用。

先看看我要做的初始化LOGO,这个LOGO就是使用Illustrator绘制出来的:



它是一只酷似萝卜的可爱小鼠,我把它叫做“萝卜鼠”,是我在三年前设计的。

(1)首先进行初步的准备工作。在Illustrator中打开上述AI文件,然后按住Alt键,然后拖动整个LOGO,我这里演示的是向右下的立体效果,所以,我拖动LOGO时向左上方向作了合适的位移。按住Alt键拖动的作用是拖动的同时,复制出另一个原始图形的备份。为了做的时候不那么刺眼,同时使前景和背景图形对比明显以方便操作,所以我特地将上面一个改成橙色,而原来那个改成黑色,因为红色看得太多比较伤眼睛:)或者说眼睛比较疲劳。
得到如下效果:

接下面,我们需要做更关键的步骤,绘制出3D效果。

(2)选中全部,然后在PathFinder面板中点击左下角的“Divide”,它的目的是使所有图形部分分离出完全独立的图形。注:如果PathFinder面板没有显示出来,你可以使用快捷键Shift+F9让它显示出来,或者在菜单Window项下拉菜单中点PathFinder子项,使其前面处理勾选状态,从而显示PathFinder面板。
此操作完成后,再按Shift + Ctrl + G,打散各图形。
结果如下:(为方便操作,我已放大显示原图)


(3)勾出未填实的局部区域。点中左边工具箱中的Pen Tool(P),选择合适的笔刷颜色(比如红色)和笔刷宽度Stroke面板中设置(比如0.25pt)。接下来要做的就是勾出所有阴影部分并使之显得更完美。我这里仅举一小块的连接以示说明。为了更方便操作,使用Zoom Tool(Z)放大需要处理的局部图形,之后使用Pen Tool(P)勾出未填实的局部区域,同时使用Line Segment Tool连接图形,注意多边形的外边线与原图的曲线“外切”,以使阴影显得平滑自然,这将考验你的耐心并取决于你的美术欣赏水平。如下图:

对于一些特殊的地方可能需要特殊处理,比如上图的右下部分,就使用了Line Segment Tool (/)。
然后,选中全部,使用Path Finder面板的"Divide",再Shift + Ctrl + G,打散。

(4)合并橙色部分:选中其中任意一块橙色图形,然后依次点击菜单Select -> Same -> Fill Color,这样选中了所有橙色填充的图形。再按PathFinder面板中的Shape Modes的第一个"Add to shape area"小按钮,然后点击Expand。这样,橙色的图形又成了一个完整的整体(这里也可以直接在PathFinder面板中点击下面的Merge小按钮)。但黑色部分则分别成单独的图形块。

(5)分别将应该为黑色显示的相邻部分(可能暂时显示的填充颜色为空)同时选中,然后点击"Add to shape area"小按钮,再点击Expand合并它们,如下面图a,图b所示:

(图a)


(图b)

(6)整体完成之后,应该类似下面的效果:


(7)为了更具立体效果,还需要将图形具有明显“转折”的部分做点处理,比如:

(8)现在,设置你需要的Logo前景颜色及阴影颜色。我设置之后得到的效果如下图:

 (9)最后,将此图形转换成XAML代码。
最终得到的XAML代码是:(太多,省略)

WPF中制作立体效果的文字或LOGO图形的更多相关文章

  1. WPF中制作立体效果的文字或LOGO图形(续)

    原文:WPF中制作立体效果的文字或LOGO图形(续) 上篇"WPF中制作立体效果的文字或LOGO图形"(http://blog.csdn.net/johnsuna/archive/ ...

  2. 在WPF中制作正圆形公章

    原文:在WPF中制作正圆形公章 之前,我利用C#与GDI+程序制作过正圆形公章(利用C#制作公章 ,C#制作公章[续])并将它集成到一个小软件中(个性印章及公章的画法及实现),今天我们来探讨一下WPF ...

  3. WPF绘制党徽(立体效果,Cool)

    原文:WPF绘制党徽(立体效果,Cool) 前面用WPF方式绘制了党旗(WPF制作的党旗) ,去年3月份利用C# 及GDI+绘制过党徽,这次使用WPF来绘制党徽. ------------------ ...

  4. WPF中制作带中国农历的万年历

    原文:WPF中制作带中国农历的万年历 本例应用.net 2.0中的ChineseLunisolarCalendar类,制作出带中国农历的万年历.  先看看效果图片(已缩小,原始图片为:http://p ...

  5. WPF中制作无边框窗体

    原文:WPF中制作无边框窗体 众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormBorderStyle属性设置为None来完成.如果要制作成异形窗体,则需要使用图片或者使用G ...

  6. 01.WPF中制作无边框窗体

    [引用:]http://blog.csdn.net/johnsuna/article/details/1893319   众所周知,在WinForm中,如果要制作一个无边框窗体,可以将窗体的FormB ...

  7. 在 WPF 中实现融合效果

    1. 融合效果 融合效果是指对两个接近的元素进行高斯模糊后再提高对比度,使它们看上去"粘"在一起.在之前的一篇文章中,我使用 Win2D 实现了融合效果,效果如下: 不过 Win2 ...

  8. 使用CSS3制作立体效果的导航菜单

    效果如下: 也可以点击网址查看效果:http://keleyi.com/keleyi/phtml/html5/12.htm 请使用支持CSS3的浏览器访问本页面,获得更好效果. 源代码: <st ...

  9. 二维图形的矩阵变换(二)——WPF中的矩阵变换基础

    原文:二维图形的矩阵变换(二)--WPF中的矩阵变换基础 在前文二维图形的矩阵变换(一)——基本概念中已经介绍过二维图像矩阵变换的一些基础知识,本文中主要介绍一下如何在WPF中进行矩阵变换. Matr ...

随机推荐

  1. 程序猿必备软件转载自 www.uhdesk.com

    XMLSpy 2012 企业版中文破解版 软件描写叙述: XMLSpy是XML(标准通用标记语言的子集)编辑器,支持WYSWYG.支持Unicode.多字符集,支持Well-formed和Valida ...

  2. 22、在Ubuntu 14.0上使用韦东山IP2977测试总结(未成功)

    1. 去www.kernel.org下载同版本的内核(与Ubuntu 14.0) 解压后把drivers/media/video/uvc目录取出(发现我的3.13版本的在drivers\media\u ...

  3. tp5 thinkphp5 index.php隐藏 iis 重写 伪静态

    面临的问题如下: 网上找了个源码,tp5的,公司服务器是iis,源码是隐藏index.php使用了路由,iis默认去找那个路径的文件了,找不到,所以报错了 如果没有iis没有安装"url重写 ...

  4. 【u121】教主的花园

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 教主有着一个环形的花园,他想在花园周围均匀地种上n棵树,但是教主花园的土壤很特别,每个位置适合种的树都 ...

  5. SpringMVC上传图片总结(1)---常规方法进行图片上传,使用了MultipartFile、MultipartHttpServletRequest

    原文地址:https://blog.csdn.net/chenchunlin526/article/details/70945877 SpringMVC上传图片总结(1)---常规方法进行图片上传,使 ...

  6. Android 各个版本号WebView

    转载请注明出处   http://blog.csdn.net/typename/ powered by miechal zhao : miechalzhao@gmail.com 前言: 依据Googl ...

  7. iOS开发Quarz2D 九:图片加水印

    #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutl ...

  8. solr源码导入eclipse 分类: H4_SOLR/LUCENCE 2014-07-14 14:11 550人阅读 评论(1) 收藏

    转载自:http://blog.csdn.net/vltic/article/details/19917377 (1)相应的开发环境准备          (1)jdk1.6+的安装和环境变量配置(命 ...

  9. 洛谷 P1984 [SDOI2008]烧水问题

    洛谷 P1984 [SDOI2008]烧水问题 题目描述 把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃.现需要把每一杯水都烧开.我们可以对任意一杯水进行加热. ...

  10. ORACLE会话数、连接数配置

    ORACLE会话数.连接数配置 ORACLE会话数.连接数配置 ORACLE的会话数和连接数参数配置 以sysdba身份登录 sqlplus sys/xxxx as sysdba; 查看最大连接数: ...