上一章我们对XAML有个初步的认识了,知道XAML是用来设计UI的,那么说怎么设计,基本用法和语法分别是什么呢?接下来我们就系统的简单学习一下XAML的一些基本语法吧。1-XAML的结构如果学习过Winform或者其他桌面设计的应该知道我们最终设计的是与人员交互的图形界面。比如在Winform当中你去设计界面之后,VS自动给你生成了design.cs,我们打开能够看到里边首先是声明了对应的类,然后设置了对应类的属性。对于xaml而言也差不多,不过唯一的区别就是,xaml的结构相对于其他设计型而言是属于树结构。我们知道一棵树有对应树干,树干有很多分支,分支上边又可以有很多分支。这个就是树结构。x
上一章我们对XAML有个初步的认识了,知道XAML是用来设计UI的,那么说怎么设计,基本用法和语法分别是什么呢?接下来我们就系统的简单学习一下XAML的一些基本语法吧。1-XAML的结构如果学习过Winform或者其他桌面设计的应该知道我们最终设计的是与人员交互的图形界面。比如在Winform当中你去设计界面之后,VS自动给你生成了design.cs,我们打开能够看到里边首先是声明了对应的类,然后设置了对应类的属性。对于xaml而言也差不多,不过唯一的区别就是,xaml的结构相对于其他设计型而言是属于树结构。我们知道一棵树有对应树干,树干有很多分支,分支上边又可以有很多分支。这个就是树结构。x
效果概述最近有个小需求要用双滑块表示一个取值范围,于是就简单做了个用户控件,在此记录下.使用矩形Rectangle表示范围,椭圆Ellipse表示滑块,使用Canvas控制滑块的左右移动.椭圆的鼠标按下事件里强制获取鼠标事件焦点,避免移动过快或移出控件范围时,滑块就不跟着跑了.椭圆的鼠标抬起事件释放强制获取鼠标事件焦点代码部分需求比较简单,只定义了4个依赖属性,范围的最大值和最小值,取值的最大值和最小值.接下来就是计算滑块和高亮矩形的位置,计算时注意减去椭圆Ellipse控件(圆)的半径,使圆心对准值,而不是左侧对准值.鼠标移动的时候,计算当前位置对应的值,去改变依赖属性的值:1private
效果概述最近有个小需求要用双滑块表示一个取值范围,于是就简单做了个用户控件,在此记录下.使用矩形Rectangle表示范围,椭圆Ellipse表示滑块,使用Canvas控制滑块的左右移动.椭圆的鼠标按下事件里强制获取鼠标事件焦点,避免移动过快或移出控件范围时,滑块就不跟着跑了.椭圆的鼠标抬起事件释放强制获取鼠标事件焦点代码部分需求比较简单,只定义了4个依赖属性,范围的最大值和最小值,取值的最大值和最小值.接下来就是计算滑块和高亮矩形的位置,计算时注意减去椭圆Ellipse控件(圆)的半径,使圆心对准值,而不是左侧对准值.鼠标移动的时候,计算当前位置对应的值,去改变依赖属性的值:1private
MediaWPF(DirectX、OpenGL、Skia)视频播放控件并支持rtsp、rtmp等各类网络协议视频流支持多种渲染模式并不存在空域(airspace)问题实现原理:LibVLCSharp解码获取视频(8bit、10bit)帧数据在DirectX、OpenGL模式中程序根据视频色彩空间自动选择8bit或10bit处理。8bit:I420支持DirectX、OpenGL、Skia10bit:I0AL支持DirectX、OpenGLSkia没有使用硬件加速,所以在效率上低于前两个图形库接口。4K60帧设备:NVIDIAGeForceRTX3050LaptopGPUOpenGL:Direc
MediaWPF(DirectX、OpenGL、Skia)视频播放控件并支持rtsp、rtmp等各类网络协议视频流支持多种渲染模式并不存在空域(airspace)问题实现原理:LibVLCSharp解码获取视频(8bit、10bit)帧数据在DirectX、OpenGL模式中程序根据视频色彩空间自动选择8bit或10bit处理。8bit:I420支持DirectX、OpenGL、Skia10bit:I0AL支持DirectX、OpenGLSkia没有使用硬件加速,所以在效率上低于前两个图形库接口。4K60帧设备:NVIDIAGeForceRTX3050LaptopGPUOpenGL:Direc
一、前言项目中之前涉及到胎儿心率图曲线的绘制,最近项目中还需要添加心电曲线和血样曲线的绘制功能。今天就来分享一下心电曲线的绘制方式;二、正文1、胎儿心率曲线的绘制是通过DrawingVisual来实现的,这里的心电曲线我也是采用差不多相同的方式来实现的,只是两者曲线的数据有所区别。心电图的数据服务器端每秒发送至客户端一个数据包,一个数据包钟心电的数据大概一百个左右,看过心电图的应该知道,心电图的效果是匀速绘制出来的,而不是一次性将一百个点绘制出来;项目中是通过将数据存到数据缓冲区,然后通过线程定时推送数据到绘图端,线程里会根据缓冲区现有数据量来动态控制数据的快慢;这里的例子我就直接通过定时推数
一、前言项目中之前涉及到胎儿心率图曲线的绘制,最近项目中还需要添加心电曲线和血样曲线的绘制功能。今天就来分享一下心电曲线的绘制方式;二、正文1、胎儿心率曲线的绘制是通过DrawingVisual来实现的,这里的心电曲线我也是采用差不多相同的方式来实现的,只是两者曲线的数据有所区别。心电图的数据服务器端每秒发送至客户端一个数据包,一个数据包钟心电的数据大概一百个左右,看过心电图的应该知道,心电图的效果是匀速绘制出来的,而不是一次性将一百个点绘制出来;项目中是通过将数据存到数据缓冲区,然后通过线程定时推送数据到绘图端,线程里会根据缓冲区现有数据量来动态控制数据的快慢;这里的例子我就直接通过定时推数
1-文本控件我们熟悉的文本控件不外乎TextBox,RichTextBox。在WPF中还有一个PasswordBox,不过区分于前者的区别就是PasswordBox是直接继承于Control的比较特殊,前三者是继承于TextBoxBase的。接下来我们就简单介绍下这几个控件。1.1-多行文本对于TextBox而言通常用于存储单行文本的并且能够通过MaxLength属性来设置字符的数量的,但是有时候我们需要大量的文本内容。这时候我们能够将TextWarpping属性设置为Wrap或者WrapOverflow。如果是前者,会在控件边缘直接换行。如果后者到了该换行的时候如果没有发现合适位置换行会允许
1-文本控件我们熟悉的文本控件不外乎TextBox,RichTextBox。在WPF中还有一个PasswordBox,不过区分于前者的区别就是PasswordBox是直接继承于Control的比较特殊,前三者是继承于TextBoxBase的。接下来我们就简单介绍下这几个控件。1.1-多行文本对于TextBox而言通常用于存储单行文本的并且能够通过MaxLength属性来设置字符的数量的,但是有时候我们需要大量的文本内容。这时候我们能够将TextWarpping属性设置为Wrap或者WrapOverflow。如果是前者,会在控件边缘直接换行。如果后者到了该换行的时候如果没有发现合适位置换行会允许