第1篇 C#程序设计基础 2
第1章 C#代码编写基础 2
1.1 C#语言和VS2012开发环境 2
1.1.1 C#语言和.NET框架 2
1.1.2 VS2012开发环境 3
1.2 C#项目的组织 4
1.2.1命名空间 4
1.2.2 using关键字 5
1.2.3 Main方法 5
1.2.4代码注释 6
1.2.5通过断点调试C#程序 7
1.2.6 C#代码编写命名规范 7
1.3控制台应用程序 8
1.3.1控制台应用程序的输入与输出 8
1.3.2在控制台应用程序中输出格式化数据 9
1.4 Windows窗体应用程序 14
1.4.1 Windows窗体应用程序的特点 14
1.4.2 Windows窗体应用程序的启动和退出 14
1.4.3窗体的创建、显示、隐藏和关闭 15
1.4.4消息框(MessageBox) 18
1.4.5利用WinForm控件实现输入和输出 19
1.4.6错误提示(ErrorProvider) 23
1.5 WPF和Silverlight应用程序 24
1.5.1 WPF应用程序 25
1.5.2 Silverlight应用程序 26
1.6其他应用程序模板 27
1.6.1 WCF应用程序 27
1.6.2 ASP.NET和ASP.NET MVC应用程序 27
1.6.3 Metro样式的应用程序 28
1.7独立应用程序和浏览器运行的应用程序 29
1.7.1服务器操作系统和客户端操作系统的分类 30
1.7.2独立应用程序的部署和运行 31
1.7.3 Web应用程序的部署和运行 32
习题 32
第2章 基本数据类型和流程控制语句 33
2.1数据类型和运算符 33
2.1.1 C#的类型系统 33
2.1.2常量与变量 34
2.1.3运算符与表达式 35
2.2简单类型 36
2.2.1整型 37
2.2.2浮点型 37
2.2.3布尔型(bool) 38
2.2.4字符(char) 38
2.2.5枚举(enum) 39
2.2.6可空类型 41
2.3字符串 42
2.3.1字符串的创建与表示形式 42
2.3.2字符串的常用操作方法 42
2.3.3 String与StringBuilder 46
2.4数组 46
2.4.1一维数组 47
2.4.2多维数组 47
2.4.3交错数组 48
2.4.4数组的常用操作方法 50
2.5数据类型之间的转换 52
2.5.1值类型之间的数据转换 52
2.5.2值类型和引用类型之间的转换 53
2.6流程控制语句 54
2.6.1分支语句 54
2.6.2循环语句 60
2.6.3跳转语句 64
2.6.4异常处理语句 65
习题 68
第3章 类和结构 69
3.1自定义类(class)和结构(struct) 69
3.1.1类的定义和成员组织 69
3.1.2访问修饰符 70
3.1.3静态成员和实例成员 72
3.1.4构造函数和析构函数 73
3.1.5字段和局部变量 75
3.1.6结构的定义和成员组织 76
3.2属性和方法 78
3.2.1属性(Property) 78
3.2.2方法 79
3.3类的继承与多态性 84
3.3.1封装 84
3.3.2继承 84
3.3.3多态(new、virtual、override) 89
3.4常用结构和类的用法 91
3.4.1 Math类 91
3.4.2 DateTime结构和TimeSpan结构 92
3.4.3秒表和计时器(Stopwatch、Timer、DispatcherTimer) 94
3.4.4随机数(Random) 96
习题 97
第4章 接口、委托与事件 98
4.1接口 98
4.1.1接口的声明和实现 98
4.1.2显式方式实现接口 100
4.1.3利用接口实现多继承 101
4.2委托 102
4.2.1定义委托类型 102
4.2.2通过委托调用方法 103
4.3事件 105
4.3.1事件的声明和引发 105
4.3.2具有标准签名的事件 106
4.4序列化与反序列化 108
4.4.1序列化 108
4.4.2反序列化 109
4.5反射 111
习题 111
第5章 泛型与LINQ 112
5.1 C#的类型扩展 112
5.1.1匿名类型和隐式类型的局部变量 112
5.1.2对象初始化和集合初始化 112
5.2泛型和泛型集合 116
5.2.1泛型的定义和引用 117
5.2.2列表和排序列表 117
5.2.3链表 119
5.2.4字典和排序字典 120
5.2.5队列 122
5.2.6堆栈 123
5.2.7哈希表和哈希集合 123
5.3 LINQ查询表达式 124
5.3.1延迟执行和立即执行 124
5.3.2 from子句 125
5.3.3 where子句 126
5.3.4 orderby子句 127
5.3.5 group子句 127
5.3.6 select子句 128
5.3.7查询多个对象 129
5.4 Lambda表达式 130
5.4.1 Lambda表达式的基本用法 130
5.4.2在Func和Action委托中使用Lambda表达式 131
5.5 LINQ to Objects 133
习题 135
第6章 目录与文件操作 136
6.1目录和文件管理 136
6.1.1 Environment类和DriveInfo类 136
6.1.2 Path类 138
6.1.3目录管理 139
6.1.4文件管理 140
6.2文件的读写 141
6.2.1文件编码 142
6.2.2文本文件的读写 142
6.2.3 StreamReader类和StreamWriter类 143
6.2.4二进制文件的读写 145
6.3 LINQ to XML 146
6.3.1创建XML 147
6.3.2查询XML 147
习题 150
第2篇 WPF应用程序 152
第7章 WPF应用程序入门 152
7.1 WPF应用程序和XAML标记 152
7.1.1 Application类和App类 152
7.1.2 WPF应用程序的关闭模式及Shutdown方法 153
7.1.3 XAML命名空间和x:前缀编程构造 156
7.1.4 XAML基本语法 158
7.1.5 WPF设计器 161
7.2窗口和对话框 161
7.2.1 WPF窗口 162
7.2.2在主窗口显示前先显示登录窗口或者欢迎窗口 165
7.2.3窗口的外观和行为 167
7.2.4对话框 168
7.2.5 WPF页和页面导航 170
7.3颜色 174
7.3.1颜色格式 174
7.3.2 Brushes类和Colors类 175
7.3.3 Color结构 175
7.4形状 176
7.4.1形状控件共有的属性 176
7.4.2矩形(Rectangle) 177
7.4.3椭圆(Ellipse) 178
7.4.4其他基本形状 178
7.5画笔(Brush) 179
7.5.1画笔分类 180
7.5.2利用WPF设计器和属性窗口设置画笔类型 180
7.5.3纯色画笔(SolidColorBrush) 181
7.5.4线性渐变画笔(LinearGradientBrush) 181
7.5.5径向渐变画笔(RadialGradientBrush) 182
7.5.6利用WPF设计器实现画笔变换 183
7.6属性 183
7.6.1依赖项属性和附加属性 184
7.6.2利用样式资源控制控件的属性 185
7.7事件 186
7.7.1 WPF事件模型 186
7.7.2事件路由策略 187
7.7.3鼠标事件 190
7.7.4键盘事件 194
7.7.5手写笔和触控事件 196
习题 196
第8章 WPF控件 197
8.1控件模型和内容模型 197
8.1.1内置的WPF控件 197
8.1.2 WPF控件模型 198
8.1.3 WPF内容模型 204
8.1.4 WPF应用程序中创建控件对象的方式 205
8.2常用布局控件 206
8.2.1 WPF的布局分类 206
8.2.2网格(Grid) 207
8.2.3堆叠面板(StackPanel) 209
8.2.4画布(Canvas) 210
8.2.5边框(Border) 212
8.2.6停靠面板(DockPanel) 213
8.2.7其他常用布局控件 214
8.3常用基本控件 215
8.3.1按钮(Button、RepeatButton) 215
8.3.2文本块(TextBlock)和标签(Label) 216
8.3.3文本框(TextBox、PasswordBox、RichTextBox) 217
8.3.4单选按钮(RadioButton) 219
8.3.5复选框(CheckBox) 221
8.3.6列表框(ListBox)和下拉框(ComboBox) 222
8.4菜单、工具条和状态条 225
8.4.1菜单(Menu)和快捷菜单(ContextMenu) 226
8.4.2工具条(ToolBar、ToolBarTray)和状态条(StatusBar) 228
8.5图像和GIF动画 231
8.5.1 Image控件 232
8.5.2利用WindowsFormsHost播放GIF动画 232
8.6其他WPF控件 233
习题 234
第9章 资源与样式控制 235
9.1文件属性与文件资源 235
9.1.1 WPF项目中的文件属性 235
9.1.2嵌入的资源和链接的资源 236
9.1.3内容文件和SplashScreen 237
9.2 XAML资源和样式控制 238
9.2.1 XAML资源 238
9.2.2 Style元素 240
9.2.3在Style元素中设置属性和事件 241
9.2.4样式的级联控制 243
9.2.5使用C#代码定义和引用样式 247
9.3在Style元素中使用模板和触发器 249
9.3.1模板 249
9.3.2触发器 251
9.4主题(Themes) 254
9.4.1系统主题 254
9.4.2自定义主题 257
9.5本地化处理 258
9.5.1利用资源字典实现本地化处理 258
9.5.2利用嵌入的资源实现本地化处理 261
习题 264
第10章 动画与多媒体 265
10.1 WPF动画基础 265
10.1.1 WPF动画的分类 265
10.1.2 Storyboard和Timeline 267
10.2基本动画(From/To/By) 274
10.2.1基本动画类型 274
10.2.2用本地动画实现基本动画 274
10.2.3用Storyboard实现基本动画 276
10.2.4用时钟动画实现基本动画 280
10.3关键帧动画 284
10.3.1关键帧动画类型 284
10.3.2利用Blend for VS2012制作关键帧动画 285
10.3.3在关键帧动画中插入样条动画 288
10.3.4在关键帧动画中插入缓动函数 289
10.4路径动画 290
10.4.1使用PathGeometry绘制路径 290
10.4.2路径动画类型 291
10.4.3利用Blend for VS2012制作路径动画 295
10.5变换(Transform) 298
10.5.1基本概念 298
10.5.2对变换进行动画处理 302
10.6效果(Effect) 303
10.6.1模糊效果(BlurEffect) 303
10.6.2阴影效果(DropShadowEffect) 304
10.6.3文本效果(TextEffect) 305
10.7音频和视频 307
10.7.1语音 307
10.7.2音频和视频(MediaElement) 309
10.7.3 SoundPlayerAction类 315
习题 315
第11章 数据绑定与数据验证 316
11.1数据绑定 316
11.1.1数据绑定基本概念 316
11.1.2简单数据绑定 320
11.1.3数据模板化 331
11.1.4通过数据模板和视图绑定到集合 336
11.2数据验证 338
11.2.1数据验证的基本概念 339
11.2.2利用验证规则和绑定模型实现验证 342
习题 352
第12章 数据库与实体数据模型 353
12.1创建数据库和表 353
12.1.1 ADO.NET数据访问技术 353
12.1.2 SQL Server 2012简介 354
12.1.3创建LocalDB数据库 355
12.2利用实体框架创建实体数据模型 358
12.2.1实体框架基本概念 358
12.2.2实体框架开发模式 359
12.2.3从数据库创建实体数据模型 359
12.3使用LINQ to Entities访问实体对象 360
12.3.1创建实体框架上下文(DbContext)实例 361
12.3.2加载相关对象 362
12.3.3查询数据 364
12.3.4修改数据 366
12.3.5添加或删除数据 368
12.4 DataGrid控件 370
12.4.1绑定各种类型的数据 370
12.4.2标题和行列控制 374
习题 378
第13章 二维图形图像处理 379
13.1图形图像处理基础 379
13.1.1与二维三维图形图像处理相关的类 379
13.1.2创建本章例子的主程序 383
13.2图形处理 385
13.2.1二维几何图形和路径标记语法 385
13.2.2基本图形 389
13.2.3复合图形 398
13.2.4将格式化文本转换为图形 400
13.3图像处理 402
13.3.1图像处理常用类 402
13.3.2图像的编码和解码 404
13.3.3像素格式转换(FormatConvertedBitmap) 408
13.3.4旋转剪切和缩放图像 409
13.3.5自动播放和逐帧绘制GIF动画 412
13.3.6其他基本的图像处理技术 413
13.4利用画笔绘制图形图像 414
13.4.1 TileBrush类 414
13.4.2图像画笔(ImageBrush) 418
13.4.3绘制画笔(DrawingBrush) 419
13.4.4可视画笔(VisualBrush) 426
习题 432
第14章 三维图形和三维呈现 433
14.1 WPF三维设计基本知识 433
14.1.1 Viewport3D控件 433
14.1.2照相机(Camera) 436
14.1.3三维几何模型(GeometryModel3D) 438
14.1.4光照类型 438
14.1.5材料(Meterial) 439
14.2在窗口或页面中呈现三维场景 442
14.2.1利用相机变换制作3D场景观察器 442
14.2.2动态显示相机的属性 442
14.2.3三维网格几何(MeshGeometry3D) 444
14.3三维建模和自定义三维模型类 448
14.3.1利用模型编辑器创建和编辑三维模型 448
14.3.2创建自定义三维模型类 451
14.3.3利用三维模型库简化场景构建 453
14.4对模型进行变换和动画处理 456
14.4.1三维变换处理基础 456
14.4.2将三维变换封装到模型库中 459
14.4.3对模型进行动画处理 461
习题 463
附录A上机练习 464
附录B综合实验 477