(WPF学习记录)第十二章 自定义面板
来源:互联网 发布:网络语吃糠是什么意思 编辑:程序博客网 时间:2024/04/30 16:53
Panel最大的好处是,它有Children属性可以进行孩子的排序。此属性的类别是UIElementCollection,负责处理对AddVisualChild、AddLogicalChild、RemoveVisualChild和RemoveLogicalChild,以进行孩子的增删。
第01个程序:统一的Grid
最简单的面板是UniformGrid。每个格子都是一样的宽和高。下面的类仿造UniformGrid的功能。
第1个文件:UniformGridAlmost.cs。
第2个文件:DuplicateUniformGrid.cs。
运行效果如下:
第02小程序:Canvas上绘图(PaintOnCanvasClone.cs)
Canvas在第七章介绍过,此面板类似传统的图形环境,利用坐标位置,指定元素的摆放地点。当有多个元素时,越早加入其中的元素出现在越下层(可被后加入的元素覆盖)。
运行结果:
第03个小程序:依对角线排列按钮
在Panel内添加Child时,一般的做法是:pnl.Children.Add(child),这样有件事不对劲,定义此child字段和属性的类,不知道有什么东西被加入或者删除了,也不知道什么时候调用的AddVisualChild、AddLogiclChild等。
一个可能的解决之道是写一个类似UIElementCollection的类,处理这件事,或者通知面板去做这件事。
第1个代码文件:DiagonalizeTheButtons.cs
有了这个类,加入孩子的时候就可以直接写pal.Add(child)。
第2个代码文件:DiagonalPanel.cs
运行效果:
第04个小程序:圆形排列按钮
一个圆可以被切割成多个扇形的小块。想将element排列成圆形,或许最直接的方式是让第个element都摆设在自己的小块内。
如下图所示,是一个小的扇形块,矩形表示按钮,从中心连到element右上角的这一条线,就是半径。
计算公式如下:
第01个代码文件:RadialPanelOrientation.cs
因为按钮通常都是宽(W)大于高(H),若按钮摆放方式不同(如旋转90度),这会影响半径的计算,不同的摆放方式会表现出来“以高度为主要决定因素”和“以宽度为主要决定因素”计算的半径。
第02个代码文件:RadialPanel.cs
第03个代码文件:CircleTheButtons.cs
运行效果如下:
- (WPF学习记录)第十二章 自定义面板
- (WPF学习记录)第十章 自定义Element
- 自定义WPF面板
- 自定义WPF面板
- 自定义WPF面板
- WPF 自定义面板
- WPF学习 第十二章2 画刷
- (WPF学习记录)第七章 Canvas
- WPF学习 第十二章1 2D图形
- WPF学习笔记之面板的种类
- (WPF学习记录)第二章 基本画刷
- (WPF学习记录)第三章 Content的概念
- (WPF学习记录)第四章 按钮与其他控件
- (WPF学习记录)第五章 Stack与Wrap
- (WPF学习记录)第六章 Dock与Grid
- (WPF学习记录)第八章 Dependency Property
- (WPF学习记录)第九章 Routed输入事件
- (WPF学习记录)第十一章 单一孩子的Element
- linux下的Select函数(一)
- ibatis的主键生成方式
- Linux select函数(二)
- 在STL 中 vector 和 list 的比较
- bing之初体验
- (WPF学习记录)第十二章 自定义面板
- linux pid
- C#中的委托
- DateUtil 类
- 静态页面utf-8编码客户端打开空白问题
- C#窗口事件处理初探
- C#中的函数指针
- 使用Ping命令测试连接情况
- 回调函数