![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
WPF
文章平均质量分 67
WPF技术记录和分享
heater404
这个作者很懒,什么都没留下…
展开
-
SciChart WPF Charts SDK v6.x
SciChart原创 2022-08-09 18:01:50 · 2079 阅读 · 6 评论 -
Live-Charts在WPF中的使用
这个支持大数据量,最多到百万级别,听说不是免费的,但是我在NuGet中安装了可以使用,不知道后面会不会过期。但是可以从其他途径弄到破解版的,只需要替换dll即可。推荐大家直接学习使用。这是作者NuGet包的路径,我们将破解版的dll替换lib文件夹中的就可以。Live-Charts在WPF中的使用。......原创 2022-08-02 14:57:18 · 3353 阅读 · 2 评论 -
DrawingVisual+CustomControl制作ROI控件
一、需求分析一个矩形框可以通过顶角或者边框改变其尺寸可以拖拽整个矩形框改变其位置可以通过鼠标滑轮把矩形框进行缩放矩形框的坐标可以通过MVVM绑定矩形框实际的坐标是像素坐标,希望一个像素可以代表大小,所以希望可以有一个尺寸缩放比例二、实现2.1 自定义DrawingVisual对象 public class ROIDrawingVisual : DrawingVisual { Pen pen = new Pen(Brushes.Black, 1);原创 2021-05-08 12:10:23 · 1009 阅读 · 0 评论 -
MaterialDesignXamlToolkit
MaterialDesignXamlToolkit(Version 4.0.0)一、Installing the Toolkit安装MaterialDesignThemes可以在NuGet中搜索安装:官方地址和Demo:GitHub - MaterialDesignInXAML/MaterialDesignInXamlToolkit: Google’s Material Design in XAML & WPF, for C# & VB.Net.二、Configuring you原创 2021-03-10 18:26:49 · 2029 阅读 · 0 评论 -
C#_GDI+绘图(一)GDI+简介
一、前言GDI+:Graphics Device Interface Plus也就是图形设备接口,它提供过了各种丰富的图形图像处理功能。用到的命名空间是System.Drawing,它提供了对GDI+基本图形功能的访问,主要是Graphics类、Bitmap类、Font类、Image类、Pen类、Color类等。这里需要注意一点的是命名空间,不要和System.Windows.Media搞混淆了,因为这个命名空间下也有很多类似的类。在WPF中,需要引用类库:而在WinForm中是不需要的。二、正原创 2020-12-24 11:21:53 · 1883 阅读 · 0 评论 -
WPF_使用IconFont字体图标
WPF_使用IconFont字体图标1、下载字体地址https://www.iconfont.cn/。一般先添加到购物车再添加到项目中,然后就可以下载到本地。注意看每一个图标都有一个代码,后面我们会用到。解压后会得到很多文件,其中.ttf格式文件就是我们需要的字体文件。2、使用字体1)添加到项目中将.ttf文件添加到项目中,例如:当然,目录可以更具需要调整。2)使用字体代码 <TextBlock FontFamily="./Fonts/#Ic原创 2020-12-16 11:30:08 · 1020 阅读 · 3 评论 -
WPF_WriteableBitmap类
WPF_WriteableBitmap类一、前言在WPF中允许使用Image元素显示位图。可直接设置Image的Source属性(是一个ImageSource类型),则可直接显示位图。<Image x:Name="myImage" Source="Resources/A.jpg" Stretch="Fill" />Image元素没有提供创建或者编辑位图信息的方法。这正是WriteableBitmap类的用武之地。该类继承自BitmapSource,BitmapSource类继承自Im原创 2020-12-08 20:32:10 · 1400 阅读 · 0 评论 -
WPF_图画(三)DrawingVisual类
WPF_图画(二)一、前言在上一篇中,我们讲到了使用可视化对象的两种方式,今天我们就来实现以下。二、在元素中封装DrawingVisual对象为在元素中驻留可视化对象,需要执行以下任务:为元素调用AddVisualChild()和AddLogicalChild()方法来注册可视化对象。从技术角度看,为了显示可视化对象,不需要执行这些任务,但为了保证正确跟踪可视化对象、在可视化树和逻辑树中显示可视化对象以及使用其他WPF特性(如命中测试),需要执行这些操作。重写VisualChildrenCou原创 2020-12-04 19:27:49 · 2842 阅读 · 1 评论 -
WPF_图画(二)Drawing抽象类
WPF_图画Geometry抽象类表示形状或路径。Drawing抽象类扮演了互补的角色,它表示2D图画(Drawing)。Drawing抽象类用于表示所有类型的2D图形,并且还有一小组类继承自该类:类说明属性GeometryDrawing封装一个几何图形,该几何图形具有填充它的画刷和绘制其边框的画笔Geometry、Brush、PenImageDrawing封装一副图像(通常是基于文件的位图图像),该图像具有定义图像边界的矩形ImageSource、RectV原创 2020-12-04 13:08:42 · 962 阅读 · 0 评论 -
WPF_变换
WPF_变换通过使用变换(transform),许多绘图任务将更趋简单;变换是通过不加通告地切换形状或元素使用讴歌的坐标系统来改变形状或元素绘制方式的对象。在WPF中,变换由继承自System.Windows.Media.Transform抽象类的类表示。名称说明重要属性TranslateTransform将坐标系统移动一定距离。如果希望在不同的地方绘制相同的形状,该变换非常有用X、YRotateTransform旋转坐标系统。正常绘制的形状绕着选择的中心点选装Ang原创 2020-12-03 17:29:10 · 162 阅读 · 0 评论 -
WPF_深入理解画刷
WPF_深入理解画刷画刷用于填充区域,不管是元素的背景色、前景色以及边框,还是形状的内部填充和笔画(stroke)。画刷支持更改通知,因为它们继承自Freezable类。如果改变了画刷,任何使用画刷的元素都会自动更新绘制自身。画刷支持部分透明。为此,只需要修改Opacity属性,使背景能够透过前面的内容进行显示。通过SystemBrushes类可以访问这样的画刷:此类画刷使用Windows系统设置为当前计算机定义的首选颜色。画刷类继承自System.Windows.Media.Br原创 2020-12-03 16:13:35 · 354 阅读 · 0 评论 -
WPF_图画(一)Shape类及其派生类
一、Shape类1、Rectangle和Ellipse矩形和椭圆使用的时候一般需要设置宽和高,其他的没有什么好说的,以后遇到问题再补充。2、LineLine形状表示连接一个点到另一个点的直线。起点和终点由四个属性设置:X1和X2(起点)、X2和Y2(终点),并且这四个属性是依赖属性,意味着我们可以进行绑定,这两个点的坐标是相对于其父容器的左上角的坐标。 如果父容器为Canvas,那么就是相对于其左上角,如果设置了Canvas.Left等属性,那么就需要做相应的偏移。 如果父容器为StackPane原创 2020-12-03 11:01:15 · 1145 阅读 · 0 评论 -
WPF_ListView最后列右侧的留白
一、前言ListView的简单使用一般会出现如下情况:我自定义了三列,但是除了显示三列外,在第三列的右侧还会出现一块留白,非常不好看。那有啥办法解决呢???二、解决在后台代码中强制修改最后一列的宽度 private void ListView_SizeChanged(object sender, SizeChangedEventArgs e) { UpdateColumnsWidth(sender as ListView);原创 2020-11-28 18:02:38 · 829 阅读 · 0 评论 -
WPF_ComboBox的MVVM绑定(三)
一、前言在第二篇中我们介绍了Enum的绑定,今天我们将Enum结合第一篇的内容进行一个最终版本的绑定。因为大多情况下,我们使用ComboBox还是会有对应的Enum的。二、回顾还是第一篇中的这个自定义类: public class ComboBoxItemModel<T> { public string Description { get; set; } public T SelectedModel { get; set; } public bool Is原创 2020-11-28 15:59:36 · 2566 阅读 · 0 评论 -
WPF(巨坑一)_GridSplitter为什么用键盘控制不了了
WPF(巨坑一)_GridSplitter为什么用键盘控制不了一、背景由于要实现某些功能使用到了GridSplitter,然后就写了一个测试工程,并且给GridSplitter写了一个Style: <Style TargetType="GridSplitter"> <Setter Property="DragIncrement" Value="0.5" /> <Setter Proper原创 2020-11-19 15:56:38 · 270 阅读 · 0 评论 -
XAML特殊字符
XAML特殊字符原创 2020-11-17 10:30:37 · 168 阅读 · 0 评论 -
WPF中单位
WPF中单位WPF程序中的单位是与设备无关的单位,每个单位是1/96英寸,如果电脑的DPI(Dots Per Inch,每英寸点数)设置为96(每个英寸96个像素),那么此时每个WPF单位对应一个像素,不过如果电脑的DPI设备为120(每个英寸120个像素),那此时每个WPF单位对应应该是120/96=1.25个像素一般在程序中我们常常需要得到当前屏幕的宽和高,常见做法有:System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width这两个方法可以返回当原创 2020-11-16 18:11:29 · 639 阅读 · 0 评论 -
WPF_ComboBox的MVVM绑定(二)
WPF_ComboBox的MVVM绑定(二)一、前言在第一篇总我们介绍了一种比较复杂的绑定方式,在这一篇中我们介绍一种更简单的方法。因为我们需要绑定到ComboBox的内容,一般情况下都可以使用枚举类型装载,所以在这篇文章中其实就是介绍的枚举类型绑定到ComboBox控件上。二、示例 public Array Enums { get { return Enum.GetValues(type原创 2020-10-29 17:34:37 · 2415 阅读 · 0 评论 -
WPF_ComboBox的MVVM绑定(一)
WPF_ComboBox的MVVM绑定一、背景在控件ComboBox中,我们一般会将选择项写在ComboBoxItem中,例如:<ComboBox> <ComboBoxItem Content="Item0" /> <ComboBoxItem Content="Item1" /> <ComboBoxItem Content="Item2" /> <ComboBoxItem Content="Item3" />原创 2020-10-13 19:57:23 · 10891 阅读 · 1 评论 -
ContentControl的Content绑定View还是ViewModel
WPF中如何将ViewModel作为ContentControl的Content一、背景在WPF中有一种控件叫做ContenControl,其有一个object类型的依赖属性Content。我们常规做法是将UserControl赋值给Content,但是这么做两个问题。1)一般我们会将Content绑定到ViewModel层的数据,如果该数据为UserControl,那么在ViewModel层中就出现了View层。2)一般使用Content绑定UserControl的时候,都是用与动态切换的场景,如原创 2020-10-12 00:04:15 · 3532 阅读 · 1 评论 -
Unity3D界面嵌入WPF界面中(鼠标键盘均可正常响应)
Unity3D界面嵌入WPF界面中(鼠标键盘均可正常响应)1、引用System.Windows.Forms.dll和WindowsFormsIntegration.dllunity3D界面不能够直接嵌入到WPF控件中,但是可以嵌入到WinForm控件中,所以我们需要在WPF中使用WinForm控件作为载体。需要引用上述dll,如下图所示:然后在Xaml文件中引入命名空间即可使用WinForm控件,例如:xmlns:wf="clr-namespace:System.Windows.Forms;ass原创 2020-10-11 01:06:28 · 2623 阅读 · 7 评论 -
WPF_Behavior之自动滚动到底部的ListBox
WPF_Behavior之自动滚动到底部的ListBox一、前言有一个ListBox,它的ItemSource绑定了一个集合,当这个集合动态增加的时候,ListBox的Item也会增多。问题来了,由于ListBox控件的高度有限,如果其Item过多,那么ListBox的垂直滑轮不会自动滚动到最新添加的Item,如果有什么办法让它自动滚动就好。其实有一个办法就是添加触发器,这个方法应该可以实现的,但是触发器只能对某一个控件添加,触发器的效果也只能对该控件起作用,如果有其它类似的控件也需要该效果,那么不得原创 2020-10-07 23:18:29 · 1935 阅读 · 0 评论 -
WPF_CustomControl之拥有Visible属性的ColumnDefinition或者RowDefinition
Custom Control之拥有Visible属性的ColumnDefinition或者RowDefinition一、背景在WPF中布局的时候我们会经常用到ColumnDefinition,但是这个控件没有Visible属性,用来控制ColumnDefinition控件是否显示。二、思路ColumnDefinition控件本身是没有Visible属性的,所以我们需要自定义一个控件,这个控件继承ColumnDefinition,然后需要自定义一个bool类型的依赖属性Visible。Visible原创 2020-10-07 18:36:35 · 1056 阅读 · 0 评论