GUI(Graphics User Interface)图形用户界面历史
1、Win API时代,函数调用Windows消息处理
-
Win API:Windows API,调用Windows底层绘图函数,使用C语言,最原始也最基础。
2、封装时代,封装Win API成类
-
MFC,Microsoft Foundation Class:使用C++将原始的Win32 API函数封装成控件类库
-
VCL:Visual Component Library,Delphi和C++ Builder使用的与MFC类似的控件类库
3、组件化时代,消息被封装成事件,事件驱动
-
VB6:Visual Basic + ActiveX控件:使用组件化思想把Win API封装成UI控件,供多语言使用
-
Java Swing/AWP:Java SDK中使用的开发GUI程序的控件类库
-
WinForm:Windows Form:.NET平台进行GUI开发的传统方式
4、WPF时代
-
WPF:Windows Presentation Foundation
WPF控件分类
1、布局控件
2、内容控件
3、带标题的内容控件
4、条目控件(ItemsControl)
5、带标题的条目控件
6、特殊内容控件(TextBox、TextBlock等)
WPF系统控件派生图:黄色文字部分为抽象类
VisualTreeHelper类可以在可视化树上找到对应的元素
以下布局元素Grid可以接受的宽度和高度单位,默认单位是像素(Pixel)
电脑显示器一般是72dpi(Dots Per Inch,每英寸像素点数),
注意:以下结果在2560*1080显示器上获取,点距0.2628mm
英文名称 | 中文名称 | 简写 | 换算 |
Pixel | 像素 | px(默认) | 图形基本单位 |
Inch | 英寸 | in | 1英寸=96像素=2.54厘米 |
Centimeter | 厘米 | cm | 1厘米=96/2.54像素=37.795像素 |
Point | 点 | pt | 1pt=1.33333像素 |
勘误:
书中提到的一些知识点有误,如
实际上这两个元素是决定StackPanel本身在水平和垂直方向的对齐方式,也有可能是xaml版本的问题(我现在使用的是vs2015以上版本,StackPanel的VerticalAlignment和HorizontalAlignment默认值都是Stretch)
Visibility.Collapsed:如果把一个元素从Visible改为Collapsed,元素所占的位置会释放,其他元素可以自动填充到该元素的位置(使用StackPanel作为容器),官方解释:Do not display the element, and do not reserve space for it in layout.
Visibility.Hidden:如果把一个元素从Visible改为Hidden,元素所占的位置不会释放,其他元素不会自动填充到该元素的位置(使用StackPanel作为容器),官方解释:Do not display the element, but reserve space for the element in layout.