没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
20页
如果读者的年龄还稍长,应该接触过少量的Win32,操刀 MFC大张旗鼓干项目。然后转到WinForm,那么更应该看看WPF。 如果读者从事网络编程,尤其从事前端编程,那么真心恭喜你。因为现在已经不是一个桌面流行的年代了,在网络大行其道的今天,WPF有点生不逢时的感觉。但是相信我,它和SilverLight相通。就好像一个精通星际争霸的高手,很快就能转型为魔兽的顶尖高手。况且微软是凭着桌面起家的,在学习Silverlight之前,体味一下WPF又何如?笔者敢肯定一个精通WPF的人也一定会成为一个Silverlight高手。 如果读者一直从事设计,使用PhotoShop或者Flash等设计工具,并且能够抽出时间来学习WPF,很有可能成为真正意义的复合型人才。如果读者是一个优秀的设计人才,又掌握了WPF,那么你就是一个真正意义的复合型人才。因为你可以把优秀的设计用程序变为现实。
资源推荐
资源详情
资源评论
第
10
章
布局——药师的桃花岛
郭靖见她(黄蓉)在花丛中东一转西一晃,霎时不见了影踪。急忙追去,只奔出十余丈远,
立时就迷失了方向。只见东南西北都有小径,却不知走向哪一处好。他走了一阵,似觉又
回到了原地。想起在归云庄之时,黄蓉曾说那庄子布置虽奇,却哪及桃花岛阴阳开阖、乾
坤倒置之妙。这一迷路,若是乱闯,定然只有越走越糟。于是坐在一株桃树之下,只待黄
蓉来接。
——《射雕英雄传》:“第十六回 九阴真经”
[1]
这是郭靖初上桃花岛的一段,黄岛主按照五行生克和阴阳八卦的变化来布置桃花岛,因此常人无法
近得桃花岛半步。
WPF 的布局也有这样的类似巧妙之处,不懂得其中奥秘是寸步难行。一旦悟透其间相生相克的道理,
则如履平地。为了对布局有一个感性认识,我们为木木同学量身定做了一个现代版黄药师出题招婿
故事,故事的名字叫做“布局巧设桃花岛,木木憨娶俏黄蓉”。
(1)憨木木误闯桃花宝岛。
(2)老顽童试解桃花玄机。
(3)黄岛主演绎布局精妙。
(4)接下来做什么。
10.1
憨木木误闯桃花宝岛
话说桃花岛软件公司药师有两件烦心事:一是公司技术集体转型,从 WinForm 集体转型到 WPF 急
需 WPF 专业型人才;二是药师丧妻之后与女儿蓉儿相依为命,对她宠爱无比。眼看已经出落成十八
九的大姑娘,但甚是娇纵,毫无规矩,希望找个青年才俊将其许配。
药师是个聪明之人,一摸胡须想何不将招聘技术人员和招婿合为一起,这样将来也好继承我桃花岛
软件公司的大好基业。于是药师大笔一挥,写下了如此这般的招良才贤婿的广告:
小女蒲柳弱质,性又顽劣,原难侍奉君子。有道男大当婚,女大当嫁。老夫愿得一良才贤婿,继承
家业,共享天伦之乐。
药师的招婿广告贴出之后,出现了一个奇特的景象。一时间桃花岛外熙熙攘攘,恍若闹市;桃花岛
上寂然无声,门可罗雀。还是因为岛上奇门八卦之阵,青年才俊们都近不得岛半步。他们知道桃花
198
│ 葵花宝典——WPF 自学手册
岛凶险,都不愿意打头阵,害怕错失良机。于是他们的目光集中在倚在墙角的那个人身上——木木。
所有人都认为论长相和才智,再没有一个人比木木差了。因此不妨让木木一试,既不用担心木木会
娶到黄蓉,也可以多了解桃花岛的情况。于是欧阳克公子不由木木分说,抓住他的领脖,就将他甩
向了桃花岛。
木木醒来已是夜深,忽听到一阵箫声。似浅笑,似低诉,柔靡万端。木木不由痴了,打从娘胎出来,
第一次听到如此这般的天籁之音。正自沉吟,忽听得前面发出一阵急促喘气之声,正是一人盘膝而
坐。这时那洞箫声情致飘忽,缠绵宛转。便似一个女子一会儿叹息,一会儿呻吟,一会儿又软语温
存,柔声叫唤。木木年纪尚小,对男女之事不甚了了。听到箫声时感应甚淡,听了也不以为意。但
对面那人却是气喘愈急,听他呼吸声真是痛苦难当,正拼了全力来抵御箫声的诱惑。
这时木木有些害怕,为了给自己壮胆,他不由跟着箫声哼了一首周杰伦的“七里香”。木木那五音
不全,还走调的歌曲似乎是箫声的劲敌,立刻打破了箫声的神秘气氛。眼看那人作势便待跃起,听
到木木的《七里香》,心中一静,重新盘膝而坐,闭目运功。过了良久,月光从花树中照射下来。
木木才看清那人面容,须发苍然,并未全白,原来此人正是传说中的老顽童——周伯通。
10.2
老顽童试解桃花玄机
周伯通微微笑了笑,说道:“你上岛是为招婿而来?”。木木有些不好意思了,说到:“前辈,我是
过来看看热闹的,但是没想到被人给丢了上来。”老顽童又仔细打量了木木一下,掩口而笑:“黄
老邪怎么可能看上你,阔鼻大耳,身高不足 1.7 米。走吧,我带你去看看一些好玩意。”不由分说,
又抓住木木的领脖,往桃花岛的最高峰奔去。
约摸一柱香的工夫,周伯通和木木登上了桃花岛的最高峰——首阳。周伯通在桃花岛独居已久,无
聊之极。忽有一个人与他说话解闷,大感愉悦。他拍着木木的肩说:“你往下看,桃花岛的所有奥
秘都在此?”木木往下看,只见桃花开得正艳,东一片,西一片。一阵晕眩,也看不出所以然。老
顽童呵呵一笑:“在桃花岛上,实在是无聊,于是我天天坐在这儿看着一片一片桃花发呆。结果有
天老天爷发脾气了,下了好大的暴雨。把我的桃花打得七零八落,我着实有些惆怅。这个时候有道
彩虹徐徐而起,将那桃花林连成一片,突然间我终于明白了……”老顽童故作停顿,眼中发光:“一
切皆因布局!”
老顽童从上衣口袋,拿出一支笔,又从裤袋里拿出了一张皱皱巴巴的纸铺开说:“你看那些一片一
片桃花杂乱无章,而我看它们则非常规律。”木木大感兴趣,于是一老一小就蹲在那儿开始研究起
来。
大多数 GUI 程序都有许多控件,这些控件如何放置,放置控件的容器大小改变时又要如何调整控件,
这样的主题称为“布局”(layout)。黄老邪是做软件的,因此他的桃花岛布置完全合乎布局的这种
思路。他将桃花岛分为 6 个区域,每个区域是一种布局,而每个区域的桃树林则可以看成是一个个
控件。
木木听着老顽童的话,向第 1 个区域看去,只见几片红、浅红和白等不同颜色的桃树林东一片西一
第 10 章 布局——药师的桃花岛 │ 199
片,没有丝毫异常。接着他又观察第 2 个区域,这里的桃树林是同样宽度,整整齐齐地沿纵向摆放。
他的视线又转到了第 3 个区域,只见这个区域又划分成了若干个小区域。每个小区域还不一样,有
的平行摆放了若干桃林,有的一行摆放不下,又换做第 2 行。木木头已经大了,不过还是接着看第
4 个区域。这个区域更是奇特,所有的桃林一层层由外到内不停嵌套。木木一阵晕眩,有点站立不
稳,幸好老顽童站在旁边搀扶住了他。木木稍加休息,接着看第 5 个区域。这个区域倒并不是特别
奇特,不同颜色的桃树林排成规则的格网。接着第 6 个区域,这个区域的桃树排成一个圈状,如图
10-1 所示。
图 10-1 桃花岛 6 个区域的布局
老顽童嘻嘻一笑说到:“我初看这些桃林,也和你一般,看得时间久了也是非常晕眩。但是后来我
看穿了黄老邪的秘密,再看这些桃林,发现特别规整。第 1 个是 Canvas 布局;第 2 个是 StackPanel
布局;第 3 个是 WrapPanel 布局;第 4 个你看起来比较晕眩的是 DockPanel 布局,实际上这种布局,
一旦明白就会觉得非常简单;第 5 个和第 6 个布局看似平常,实际上未必简单。第 5 个是 Grid 布局,
而第 6 个则是黄老邪自定义的一种布局。”
木木听老顽童这么一说,学习布局的兴趣骤然大增,于是打开笔记本开始逐个学习布局。
10.2.1 Canvas
Canvas 是基本面板,仅仅支持用与设备无关的坐标来定位元素。这是一种传统的布置用户界面的方
式,在 Win32、MFC,甚至 WinForm 时期都是这样做的。
Canvas 用 4 个附加属性 Left、Top、Right 和 Bottom 来定位子元素,用代码 10-1 所示的代码可以模
仿桃花岛上的第 1 个桃林区域(完整示例详见 mumu_layout 工程)。
第 1 片桃林(Canvas) 第 2 片桃林(StackPanel) 第 3 片桃林(WrapPanel)
第 4 片桃林(DockPanel)
第 5 片桃林(Grid)
第 6 片桃林(自定义)
200
│ 葵花宝典——WPF 自学手册
<Page x:Class="mumu_layout.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="308" d:DesignWidth="294"
Title="第一片桃林仿真 by 木木">
<Border BorderThickness = "2" BorderBrush = "Black" Margin = "5">
<Canvas>
<Button Canvas.Left = "24" Canvas.Top = "50" Background="#00000000"
Content = "Left=24,Top=50"/>
<Button Canvas.Right="24" Canvas.Bottom="50" Background ="#FFFFCCFF"
Content = "Right=24,Bottom=50"/>
</Canvas>
</Border>
</Page>
代码 10-1 Page1.xaml 文件
程序运行结果如图 10-2 所示。
图 10-2 第一片桃林仿真
Canvas 只允许设置一个横向和纵向成对的坐标,如 Left 和 Top,以 及 Right 和 Bottom 等。如果设置
了 Left 和 Right 或者 Top 和 Bottom,则忽略一个值。
木木做完了这个仿真还是有些疑问,问到:“周大哥,这么原始的面板会有什么用呢?”老顽童看
木木这么快做完一个例子,倒还真有些惊喜,说到:“你比我以前的一个结拜师弟要聪明得多。这
种面板由于简单,自然效率就高,用在矢量绘图上是再合适不过了。”木木听了若有所思,紧接着
开始学习第二种面板……
10.2.2 StackPanel
StackPanel 是一种非常受欢迎的面板,用于顺序垂直或者水平的排列子元素。它通过 Orientation 属
性来控制水平(Horizontal)和垂直(Vertical)排列,默认值是纵向。模仿桃花岛的第 2 个区域的代
码如代码 10-2 所示。
剩余19页未读,继续阅读
资源评论
- yxd789002012-09-30是文字版的,不是扫描版,挺好的,只有第十章
- sd62766702012-06-07只有第十章内容 不是完整本
- li_chm2012-12-11不错,非常经典,如果是完整就好了。
fenglieyun
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- SSCMS登录模块需要的JS文件
- JSP网络购物中心毕业设计(源代码+论文).rar
- 白盒测试报告.docx
- 基于LM5117芯片评估开发板硬件参考设计(原理图+PCB)+中英文数据手册资料.zip
- 照片批量重命名软件(文件批量修改图片文件名)
- app.apk
- 人工智能(AI)是计算机科学的一个分支,旨在开发和应用能够模拟、延伸和扩展人类智能的理论、方法和技术,包括机器人、语言识别、图像
- 嵌入式与物联网开发是当今信息技术领域的两大重要分支,它们相互交织,共同推动着智能化时代的进步 嵌入式开发主要关注在嵌入式操作
- 网络安全,这一看似高深莫测的领域,实则与我们每个人的生活息息相关
- 毕业设计基于深度学习的视觉问答系统源码+文档说明+答辩PPT.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功