2022-08-29 23:42:50
摘要:一、WPF控件的组成
1. 逻辑与呈现的分离
控件模板旨在成为展示详细信息的自包含单元,对外部用户和对象(包括 Style 对象)不可见。 操作控件模板内容的唯一方法是在当前控件模板中。
2. 模板修改:显示区域的内容重组
Button模板Template:渲染对象、属性值的关联、触发器
样式与模板
3. 基础控件如何显示的?
功能最强大,布局最灵活的容器
主要属性配置:
ColumnDefinitions(ColumnDefinition)、RowDefinitions(RowDefinition)、ShowGridLines、IsSharedSizeScope(SharedSizeGroup)、给子项控件使用:Grid.Row Grid.Column
使用场景:广泛,不知道用什么布局,就用Grid,意外(WrapPanel)
二、模板中的基础控件
1. 基础元素的呈现:DrawingContext DrawRect
TextBlock
Border
OnRender
2. 控件模板案例解析
Label、GroupBox、CheckBox、RadioButton、ToggleButton
TextBox/PasswordBox、TabControl/TabItem、TreeView/TreeViewItem、ListBox/ListBoxItem、ListView/ListViewItem、Menu/MenuItem
ComboBox、ScrollViewer、ProgressBar、Slider
Calendar/DatePicker、DataGrid
模板的添加与修改
默认模板:wpf\src\Microsoft.DotNet.Wpf\src\Themes
3. 控件模板案例解析
基本控件的使用
名称、基本作用表现、特征
常用属性:尺寸、定位、显示内容
常用事件:点击、输入
控件的特殊属性
Style:用来统一设置控件属性的对象
Resources:资源管理,存放可共用的数据(变量、样式、模板)
Template:用来控制控件的呈现
目的:
三、属性与绑定
1. WPF的数据关系
绑定关系:数……
阅读全文
2022-08-28 17:14:17
摘要:一、界面布局
1. 布局原则
不用显式的方式设定元素的尺寸
不使用屏幕坐标来指定位置
2. 常用布局控件与布局处理
Grid
StackPanel
DockPanel
WrapPanel
UniformGrid
Canvas
InkCanvas
Border(装饰控件:背景色/边框 圆角 子对象也只能一个)
3. Grid
功能最强大,布局最灵活的容器
主要属性配置:
ColumnDefinitions(ColumnDefinition)、RowDefinitions(RowDefinition)、ShowGridLines、IsSharedSizeScope(SharedSizeGroup)、给子项控件使用:Grid.Row Grid.Column
使用场景:广泛,不知道用什么布局,就用Grid,意外(WrapPanel)
4. StackPanel
最简单的布局容器之一
主要属性配置:Orientation-调整排列方向、FlowDirection
使用场景:图文并显、工具栏
可以Grid代替
5. WrapPanel
唯一一个不能被Grid替代的布局控件,水平方向排列,过程中当前子项出界了,进行折行
主要属性配置:Orientation-调整排列方向
使用场景:桌面式图标排列、搜索历史关键词排列
6. DockPanel
通过设置Dock停靠进行布局
主要属性配置:LastChildFill、DockPanel.Dock
使用场景:应用的主窗口布局(标题栏、状态栏、工具栏、菜单栏)
7. UniformGrid
另一种行列风格布局,自动生成统一一致的行列
主要属性配置:Columns、Rows 指定的是当前区域均分多少行和列,不存在指定行高和列宽
使用场景:9宫格的功能区域、图表
8. Canvas
通过精确坐标定位放置子元素
主要属性配置:Canvas.Left、Top、Right、Bottom
使用场景:组态、组件封装(仪表)
9. InkCanvas
支持任意笔画输入的画布组件
主要属性配置:
使用场景:手写墨迹识别(不是手写图像识别):文字、图形
……
阅读全文
2022-08-22 12:37:23
摘要:一、基本对象
1. WPF 3D
WPF 中 3D 功能的设计初衷并非提供功能齐全的游戏开发平台。
WPF 中的 3D 图形内容封装在 Viewport3D 元素中,该元素可以参与二维元素结构。 该图形系统将 Viewport3D 视为一个二维视觉元素,就像 WPF 中的许多其他元素一样。 Viewport3D 充当三维场景中的窗口(即视区)。 更准确地说,它是 3D 场景所投影到的图面。
2. 模型3D场景
3D视口
坐标系
点、线、面、三角顶点网格
材质
光源
相机
3. 3D对象模型结构
MeshGemetry3D
Positions
TraiangleIndices
TextureCoordinates:如何对应?
4. 相机
OrthographicCamera:正交
PerspectiveCamera:透视
基本属性:
Position:相机的空间坐标(X,Y,Z)
LookDirection:观察方向,向量,相机观察口朝向
FieldOfView(透视相机属性) / Width(正交相机属性):视野范围(焦距),一个值
UpDirection:相机上方方向,控制相机观察口旋转
FarPlaneDistance:远景距离,大于这个距离的场景不渲染
NearPlaneDistance:近景距离,小于这个距离的场景不渲染
5. 3D对象模型材质
DiffuseMaterial:漫反射,反射场景光效果
EmissiveMaterial:自发光,类似于电灯
SpecularMaterial:全反射,可以映射场景
贴图(平面贴图、曲面贴图-地球)
背面材质
6. 3D对象模型光源
AmbientLight:环境光
DirectionalLight:平行光
PointLight:点光源
SpotLight:聚光灯
相关属性
Color:灯光颜色
Direction:光线方向(平行光、聚光灯)
Position:光源坐标(点光源、聚光灯)
Range:灯光范围(点光源)
InnerConeAngle:内光柱照射角度(聚光灯)
OuterConeAngle:外光柱照射角度(聚光灯)
7. 3D……
阅读全文
2022-08-21 19:58:54
摘要:一、基础控件汇总
| 控件类型 | 主要控件 |
| ------------ | ------------------------------------------------------------ |
| 按钮控件 | Button、RepeatButton、RadioButton |
| 数据显示控件 | TextBlock、Label、Image、ItemsControl**、ListView、ListBox、DataGrid、DocumentViwer |
| 输入控件 | TextBox、RichTextBox、CheckBox、ComboBox、DatePicker、PasswordBox、Slider、ProgressBar |
| 菜单导航控件 | MenuItem、ContextMenu、ToolBar、TreeView、TabControl、Expander |
| 信息提示控件 | Popup、Window、PrintDialog、ToolTip |
| 布局控件 | Grid、StackPanel、WrapPanel、DockPanel、UniformGrid、Canvas、InkCanvas、**Border |
| 图形控件 | Line、Rectangle、Ellipse、Polyline、Polygon、Path |
| 其他控件 | ScrollViwer、GroupBox、ViewBox |
1. 常用属性
尺寸(宽高)、定位(Margin,HorizontalAlignment、VerticalAlignment)、颜色(Background、Foreground)、信息显示(Text、Content、ListViewItem、ListBoxItem、DataGridTextColumn…..)
鼠标事件、键盘事件
特别属性
RadioButton:GroupName
集合控……
阅读全文