当前位置: 首页 > news >正文

WPF UI 界面布局 魔术棒 文字笔记识别 技能提升 布局功能扩展与自定义 继承Panel的对象,测量与排列 系列七

应用开发第一步

功能分类:页面上的功能区域划分。。。。需求分析  业务逻辑     数据流    功能模块    UI/UX     编码     测试     发布 功能开发与布局

不用显式的方式设定元素的尺寸 不使用屏幕坐标来指定位置

Grid

功能最强大,布局最灵活的容器
主要属性配置:ColumnDefinitions(ColumnDefinition)、RowDefinitions(RowDefinition)
                       ShowGridLines、IsSharedSizeScope(SharedSizeGroup)
                       给子项控件使用:Grid.Row    Grid.Column
使用场景:广泛,不知道用什么布局,就用Grid,意外(WrapPanel)

StackPanel

最简单的布局容器之一
主要属性配置:Orientation-调整排列方向、FlowDirection
使用场景:图文并显、工具栏
可以Grid代替

WrapPanel

唯一一个不能被Grid替代的布局控件,水平方向排列,过程中当前子项出界了,进行折行
主要属性配置:Orientation-调整排列方向
使用场景:桌面式图标排列、搜索历史关键词排列


DockPanel

通过设置Dock停靠进行布局
主要属性配置:LastChildFill、DockPanel.Dock
使用场景:应用的主窗口布局(标题栏、状态栏、工具栏、菜单栏)


UniformGrid

另一种行列风格布局,自动生成统一一致的行列
主要属性配置:Columns、Rows    指定的是当前区域均分多少行和列,不存在指定行高和列宽
使用场景:9宫格的功能区域、图表

Canvas

通过精确坐标定位放置子元素
主要属性配置:Canvas.Left、Top、Right、Bottom
使用场景:组态、组件封装(仪表)


InkCanvas

支持任意笔画输入的画布组件
主要属性配置:
使用场景:

画笔

橡皮擦

魔术棒

其他 文字笔记识别

WPF UI InkCanvas 导师演示画板 演示 笔记 画笔 识别-CSDN博客


Border


最基础的装饰控件
主要属性配置:
使用场景:

技能提升 布局功能扩展与自定义

功能需求: 继承Panel的对象,测量与排列

后端

protected override Size MeasureOverride(Size availableSize)
{double total_y = 0;foreach (UIElement item in this.InternalChildren){item.Measure(availableSize);total_y += item.DesiredSize.Height;}return new Size(availableSize.Width, total_y);
}protected override Size ArrangeOverride(Size finalSize)
{double offset_y = 0;foreach (UIElement item in this.InternalChildren){item.Arrange(new Rect(0, offset_y, finalSize.Width, item.DesiredSize.Height));offset_y += item.DesiredSize.Height;}return base.ArrangeOverride(finalSize);
}

扩展

public int ColumnSpace { get; set; } = 0;
public int RowSpace { get; set; } = 0;protected override Size MeasureOverride(Size availableSize)
{//var perHeight = availableSize.Height / Math.Ceiling(this.InternalChildren.Count * 0.1 / 3);var perWidth = (availableSize.Width - ColumnSpace * 2) / 3;double total_y = 0;foreach (UIElement item in this.InternalChildren){item.Measure(new Size(perWidth, availableSize.Height));total_y = item.DesiredSize.Height;}return new Size(availableSize.Width, total_y);
}protected override Size ArrangeOverride(Size finalSize)
{double offset_y = 0;double offset_x = 0;var perWidth = (finalSize.Width - ColumnSpace * 2) / 3;for (int i = 1; i < this.InternalChildren.Count + 1; i++){UIElement item = this.InternalChildren[i - 1];item.Arrange(new Rect(offset_x, offset_y, perWidth, item.DesiredSize.Height));if (i % 3 == 0){offset_x = 0;offset_y += item.DesiredSize.Height + RowSpace;}elseoffset_x += perWidth + ColumnSpace;}return base.ArrangeOverride(finalSize);
}

C# WPF 3D 数据孪生 系列六-CSDN博客

WPF 3D绘图 点云 系列五-CSDN博客

WPF UI 3D 多轴 机械臂 stl 模型UI交互-CSDN博客

WPF UI 3D 基本概念 点线三角面 相机对象 材质对象与贴图 3D地球 光源 变形处理 动作交互 辅助交互插件 系列三-CSDN博客

http://www.lryc.cn/news/394924.html

相关文章:

  • 文件格式是.pb应该怎么查看?
  • android2024 gradle8 Processor和ksp两种编译时注解实现
  • elementui的table的@selection-change阻止事件改变
  • 空间数据采集与管理:为什么选择ArcGISPro和Python?
  • 案例精选 | 聚铭综合日志分析系统为江苏省电子口岸构建高效安全的贸易生态
  • TCP粘包
  • 数据泄露态势(2024年5月)
  • 二手闲置平台小程序的设计
  • 协程libgo的使用
  • 什么叫低频晶振?低频晶振最低频率能达到多少?低频晶振封装尺寸有哪些?
  • Splunk Enterprise 任意文件读取漏洞(CVE-2024-36991)
  • 零基础STM32单片机编程入门(九)IIC总线详解及EEPROM实战含源码视频
  • 数据库的操作
  • 常见的认证方式
  • DolphinScheduler部署安装or基础介绍(一)
  • Failed building wheel for pyaudio Running setup.py clean for pyaudio
  • 【ARMv8/v9 GIC- 700 系列 1 -- Programmers model for GIC-700】
  • exel带单位求和,统计元素个数
  • JavaScript里方括号[]的使用
  • 俯卧撑计数器(Python)
  • UVA12342 Tax Calculator 题解
  • WebKit中Websockets的全面支持:实现高效实时通信
  • 微信小程序的智慧物流平台-计算机毕业设计源码49796
  • 旅游 | 西岳华山
  • 如何优化Java中的内存占用?
  • 2024这三家上海闵行装修公司,值得一看
  • K8S学习教程(三):在PetaExpress KubeSphere 容器部署 Wiki 系统 wiki.js 并启用中文全文检索
  • 服务器该如何抵御CC攻击
  • 关于centos7自带的nginx1.20.1开启https后,XP系统的IE6和IE8无法显示网页的问题
  • Zotero软件翻译插件Translate for Zotero的API接入方法--百度垂直领域翻译