
WPF应用实例
基于WPF框架,提供丰富的应用实例
RunnerDNA
这个作者很懒,什么都没留下…
展开
-
WPF实现将图像转化成粒子效果
实现效果如下:这里的处理逻辑首先是将图像进行马赛克处理,然后对于每一个需要填充的粒子按照颜色的深浅度计算粒子大小,最后按照坐标进行填充。1、粒子类 public class Particle { public Point Position;//位置 public double Size;//尺寸 }2、图像处理类 public class MosaicHelper { /// <summar原创 2020-06-11 15:20:28 · 965 阅读 · 0 评论 -
WPF一个完整的GIF制作工具实例(Part3:生成GIF)
这里生成GIF文件用的是AnimatedGifEncoder、LZWEncoder、NeuQuant,网上可以找到源码,由于该实例可对每一帧单独修改延时,所以修改了AnimatedGifEncoder中的AddFrame方法: public bool AddFrame(Image im, int ms) { if ((im == null) || !started) { return fals原创 2020-05-29 13:58:44 · 576 阅读 · 0 评论 -
WPF一个完整的GIF制作工具实例(Part2:时间轴控件的实现)
该时间轴控件可实现动画帧的动态添加、删除,设置每个帧的延迟时间,还可与绘图控件同步更新绘制,效果如下:实现步骤:1、由于每个动画帧里的帧素材可以各不相同,所以添加帧的绑定数据类FrameBindData.cs,源码如下: public partial class FrameBindData : INotifyPropertyChanged { public FrameBindData() { this.frameCoun原创 2020-05-29 11:16:28 · 730 阅读 · 0 评论 -
WPF一个完整的GIF制作工具实例(Part1:绘图控件的封装)
最近在家闭门造车,写了一个简单的GIF制作工具,效果如下:下面介绍下实现步骤:首先是绘图控件部分功能,实现了图片与坐标宽高之间的绑定,具体可参考博文:WPF中GDI+图形图像的绘制:(八)位置坐标和宽高与控件绑定展示,这里对其做了功能完善与封装。1、MyImage类,由于底图不可选中编辑,所以加入了IsCanClick是否可以点击选中标志,在鼠标操作中加入判断if (!IsCanClick) return;其他与WPF中GDI+图形图像的绘制:(七)绘制图像——鼠标拖动改变位置和大原创 2020-05-29 10:41:10 · 541 阅读 · 1 评论 -
WPF实现图片动态滚动消失效果(方式二:使用Storyboard)
这里我们使用Storyboard来动态显示ListView元素位置的更改,效果如下(与采用FluidMoveBehavior方式实现的区别是前面几个图片的加载效果,后面的滚动消失效果基本一致):实现步骤:1、图片资源绑定类ListBindData.cs与方式一中的相同,不再赘述。2、图片滚动效果是采用Storyboard改变ListViewItem的RenderTransform属性来实现的。窗体xaml:<Window x:Class="SmoothScroll.MainW原创 2020-05-20 16:29:52 · 1127 阅读 · 0 评论 -
WPF实现图片动态滚动消失效果(方式一:使用FluidMoveBehavior)
实现效果:实现步骤:1、首先添加对Microsoft.Expression.Interactions.dll和system.windows.interactivity.dll的引用;2、实现平滑滚动效果主要是在控件模板中加入以下代码:<ListBox.ItemsPanel> <ItemsPanelTemplate> ...原创 2019-07-19 18:43:54 · 1669 阅读 · 0 评论 -
WPF调用打印机打印合成图像
实际应用中经常会需要将生成图像等打印输出,这里提供一个简单的实例,可修改默认打印机并打印,效果如下:原创 2020-05-18 14:32:23 · 1033 阅读 · 0 评论 -
WPF加载系统本地字体列表示例
本节主要实现加载系统本地字体功能,效果如下:1、窗体xaml<Window x:Class="SysFontDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.micros原创 2020-05-14 16:53:29 · 915 阅读 · 0 评论 -
WPF实现鼠标拖动框选功能
本实例主要是使用WPF实现拖动鼠标画出矩形框同时框选控件的功能,效果如下:原创 2020-05-13 11:06:40 · 5065 阅读 · 3 评论 -
WPF一个完整的TreeView使用实例:(四)节点重命名
在TreeView添加节点后有时后会需要修改节点的名称,这时就需要重命名功能。这里简单实现了右键菜单重命名,效果如下:原创 2020-05-11 16:32:50 · 3146 阅读 · 1 评论 -
WPF一个完整的TreeView使用实例:(三)右键菜单复制+粘贴+删除
在对TreeView操作时免不了要有增删,这里加入右键菜单复制、粘贴、删除的功能,效果如下:1、添加全局变量private TreeViewNode copyNode;//所复制的节点数据2、在TreeView控件中加入右键菜单复制、粘贴、删除及其相关Command <TreeView x:Name="treeView" Background="Tran...原创 2020-05-07 15:06:59 · 3729 阅读 · 3 评论 -
WPF一个完整的TreeView使用实例:(二)拖拽改变父子节点层级
本节主要在上节的基础上实现拖拽改变父子节点层级的功能,效果如下:1、添加全局变量private Point lastMouseDownPoint;//上一次鼠标左键点击位置private TreeViewNode targetNode;//目标节点2、在TreeView控件中加入MouseLeftButtonDown事件 /// <summary>...原创 2020-05-06 20:01:35 · 2808 阅读 · 2 评论 -
WPF一个完整的TreeView使用实例:(一)自定义控件样式+数据源绑定+动态添加父子节点
TreeView控件可在树结构中显示分层数据,其中的项可以展开和折叠。它可以包含多种类型的控件,如Button、Lable、Image等控件,可以通过绑定到数据源并使用HieratchicalDataTemplate对象来填充其树。可以修改默认ControlTemplate以使控件具有独特的外观。这里举一个完整的TreeView实例来进行说明。本节主要实现自定义控件样式+数据源绑定+动态添加父...原创 2020-04-30 15:47:50 · 8930 阅读 · 2 评论 -
WPF加载GIF的五种方式(Storyboard / WpfAnimatedGif / ImageAnimator / PictureBox / MediaElement)
1、使用Storyboard原创 2020-04-27 11:24:03 · 4586 阅读 · 2 评论 -
WPF自定义DatePicker实现仿HTML5日期选择控件功能
最近重写了WPF自带的DatePicker控件样式,可响应鼠标滚轮、键盘等事件修改日期,效果如图:话不多说,直接上源码:1、主窗体xaml:<Window x:Class="WpfApp2.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...原创 2020-01-14 17:23:10 · 1532 阅读 · 0 评论 -
WPF实现FileDialog选择文件夹对话框功能
WPF自带FileDialog选择文件夹对话框,但是有时候为了界面风格统一,需要改变其自带样式,这就比较困难了。所以自己实现了一个简易的选择文件夹对话框功能,可根据需要自行改变样式,参考文章(https://www.codeproject.com/Tips/673071/WPF-TreeView-with-WinForms-Style-Fomat、https://www.cnblogs.com/D...原创 2019-12-17 16:20:48 · 1977 阅读 · 0 评论 -
WPF利用样式实现同一组内按钮只能选中其中一个功能
这也是一篇关于纯样式解决复杂问题的例子。WPF使用RadioButton实现组内互斥,只要改变RadioButton的样式就可以实现其他控件的互斥功能,比如Button、Image等。实现效果如下图:窗体xaml源码:<Window x:Class="RadioButtonDemo.MainWindow" xmlns="http://schemas.micros...原创 2019-11-07 16:21:13 · 2285 阅读 · 0 评论 -
WPF实现Slider随Thumb位置实时显示Value值的样式
最近实现了一个关于Slider的简单样式,可随Thumb位置实时显示Value值,效果如下面所示:窗体xaml源码:<Window x:Class="SliderDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="h...原创 2019-11-07 15:53:59 · 3761 阅读 · 1 评论 -
WPF封装简单的ImageButton控件
使用WPF封装了一个简单的ImageButton自定义控件,加入常态、划过、按下、禁用状态属性,可设置相应的图标。参考链接:https://blog.youkuaiyun.com/elie_yang/article/details/818706941、ImageButton自定义控件类 public class UCImageButton : Button { stat...原创 2019-10-22 09:41:45 · 609 阅读 · 0 评论 -
WPF封装VLC播放器控件(方式二:VlcVideoSourceProvider绑定Image控件)
之前写过一篇文章关于WPF利用VLCPlayer控制Winform窗体句柄封装的视频播放器(链接:https://blog.youkuaiyun.com/dnazhd/article/details/102476134),这里换一种方式重写一下视频播放器控件,采用VlcVideoSourceProvider绑定Image控件。实现步骤:1、添加对VLC控件的引用2、UCVlcPlayer窗体x...原创 2020-01-21 15:29:15 · 3302 阅读 · 0 评论 -
WPF封装VLC播放器控件(方式一:VideoPlayer控制Winform窗体句柄)
Vlc是一款优秀的开源播放器,支持众多音频与视频解码器及文件格式。这里采用WPF引用开源的Vlc相关插件(重新编译)封装了一个简单的视频播放器控件,实现视频播放、暂停、停止、快进、慢进、视频条、声音条、最大化等功能。实现效果:1、相关插件及资源文件放在了网盘,地址:https://pan.baidu.com/s/1Fyidxn3XgAJQAGL0RInVtQ 提取码:5alm2、...原创 2019-10-10 10:38:59 · 4702 阅读 · 3 评论 -
WPF实现应用程序启动单实例及软件重启功能
在实际应用中,因为涉及到数据访问、消息连接等问题,经常需要实现应用程序的单例运行。这里采用System.Threading.Mutex来实现应用程序的单例。参考:WPF 只允许运行一个程序(单例)。在App.xaml.cs中重写启动函数: public partial class App : Application { System.Threading....原创 2019-07-23 14:16:42 · 2694 阅读 · 0 评论 -
WPF之DrawingVisual绘图:实现仿微信对话框绘制
DrawingVisual类是一个轻量级的绘图类,用于呈现形状、 图像或文本。它通常是在后台或者剪切板中绘制,用来生成一张图片。这里用DrawingVisual实现类似微信对话框的效果,如图:绘制原理:将对话框和头像绘制在一张画布上,头像大小固定为36x36像素,根据行高、文字大小等计算绘制文本的大小,再根据文本大小对原始对话框底图进行裁剪和拼接(四个角保留,对四条边进行拉伸,这...原创 2019-06-03 14:50:24 · 3438 阅读 · 2 评论 -
WPF中GDI+图形图像的绘制:(八)位置坐标和宽高与控件绑定展示
WPF之控件绑定:(一)位置坐标原创 2020-05-19 17:20:51 · 1544 阅读 · 0 评论 -
WPF中GDI+图形图像的绘制:(七)绘制图像——鼠标拖动改变位置和大小
实现效果:实现步骤:1、首先定义拖拽改变类型枚举: /// <summary> /// 拖动改变类型 /// </summary> public enum ChangeType { Move = 0,// 移动 ChangeLeftTop = 1,//左上 ChangeR...原创 2019-05-23 10:17:18 · 2983 阅读 · 2 评论 -
WPF中GDI+图形图像的绘制:(六)绘制图像——鼠标选中后绘制边框
实现效果:实现步骤:1、要实现鼠标选中显示边框效果,可以在Image控件重绘OnRender时绘制,这里我们重写Image控件,添加MyImage.cs类继承自System.Windows.Controls.Image,代码如下: public partial class MyImage : System.Windows.Controls.Image { ...原创 2019-05-22 10:01:32 · 2697 阅读 · 1 评论 -
WPF中GDI+图形图像的绘制:(五)绘制图像——蒙板效果
这里要实现的效果指的是对图片像素点区域进行颜色叠加,首先要做的是得到图片非透明部分的区域,效果如图:实现步骤:1、在主窗体添加控制控件: <Label Grid.Row="4" Grid.Column="0" Content="蒙板" VerticalAlignment="Center" HorizontalAlignment="Left"></Label&...原创 2019-05-21 09:49:08 · 1875 阅读 · 0 评论 -
WPF中GDI+图形图像的绘制:(四)绘制图像——水平垂直镜像与中心旋转
首先上实现的动态效果:步骤:1、在窗体上添加控制控件: <Label Grid.Row="2" Grid.Column="0" Content="镜像" VerticalAlignment="Center" HorizontalAlignment="Left"></Label> <Button x:Name="btnMirrorHorizo...原创 2019-05-20 14:06:04 · 1959 阅读 · 2 评论 -
WPF中GDI+图形图像的绘制:(三)绘制图像——实现黑白、浮雕、锐化效果
接下来介绍GDI+绘制图像的方法,这次主要实现的功能是图片黑白、浮雕、锐化的效果,效果图:1、接着之前绘制字体的工程,首先在Canvas里再添加一个Image控件用来绘制图片; <Canvas x:Name="mainCanvas" Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" Background="White" W...原创 2019-05-17 10:59:22 · 2049 阅读 · 0 评论 -
WPF中GDI+图形图像的绘制:(二)绘制文本——字体描边、渐变、图片叠加
先放效果:1、在上一节WPF中GDI+图形图像的绘制:(一)绘制文本——动态设置字体、大小、颜色 的基础上继续添加字体描边、渐变和图片叠加相关控件,窗体xaml如下:<Window x:Class="DrawDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentat...原创 2019-05-16 10:29:12 · 1969 阅读 · 0 评论 -
WPF中GDI+图形图像的绘制:(一)绘制文本——动态设置字体、大小、颜色
GDI+(Graphics Device Interface Plus图形设备接口加)是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息。GDI+不但在功能上比GDI 要强大很多,而且在代码编写方面也更简单,因此很快成为了Windows图形图像程序开发的首选。从程序设计的角度看,GDI包括两部分:GDI对象和GDI函数。GDI对象定义了GDI函数使用的工具和环境变量;而G...原创 2019-05-14 17:43:20 · 7484 阅读 · 3 评论 -
WPF封装一个常用图片加载、保存、裁剪、类型转换的类
使用WPF编程中经常会使用到图片加载、本地保存、不同格式类型间转换的方法,这里选取一些常用的方法:从指定路径读取图片源、Bitmap转BitmapImage、BitmapImage转Image、以png或jpg格式保存图片、图片裁剪等,进行封装,源码如下: public class ImageHelper { /// <summary> ...原创 2019-05-16 09:43:22 · 786 阅读 · 1 评论 -
WPF自定义控件ListView异步加载图片列表
通过改变ListView控件的ItemsControl.ItemContainerStyle样式可以实现各式各样的列表展示效果。如果后台读取文件夹图片资源后最后给ListView的ItemsSource赋值,可以在前台显示加载的图片列表,但是由于加载图片需要时间,会有一段空白停顿,并且要加载的图片越大停顿的时间越长。如下图所示:这里的解决方案是首先异步加载图片地址,再异步读取图片资源的方式...原创 2019-05-13 14:14:56 · 4233 阅读 · 1 评论 -
WPF实现纵向显示TabControl标题及标题字体样式
WPF实现纵向显示TabControl标题栏通过设置TabStripPlacement属性,标题字体纵向显示则可通过改变TabItem样式,在其中加入TextBlock控件,使用TextWrapping="Wrap"的特性来实现,具体效果如图:窗体xaml :<Window x:Class="VerticalTabDemo.MainWindow" xmlns="...原创 2019-05-07 08:59:10 · 3867 阅读 · 1 评论 -
WPF加载自定义WebBrower浏览器控件实现网页缩放
WebBrowser 类使用户可以在窗体中导航网页,它是一个Winfrom控件,命名空间是System.Windows.Forms。WPF中也有WebBrowser控件,但是与Winform里的相比较功能少很多。所以这里采用WPF加载Winform自定义WebBrower控件的方式,实现一个简单的加载网页并动态缩放的效果。实现的效果如下:1、首先添加System.Windows.Fo...原创 2019-04-29 15:03:26 · 1225 阅读 · 0 评论 -
WPF实现简单的颜色调色板功能
Winform有自带的ColorDialog功能,WPF可以通过引用System.Windows.Forms的方式来创建调色板,在这里仅使用Canvas等控件来实现简单的调色板。效果如下:gif录制的比较渣,实际效果图:1、窗体xaml<Window x:Class="ColorSelectorDemo.MainWindow" xmlns="http:/...原创 2019-04-25 14:35:27 · 4277 阅读 · 2 评论 -
WPF根据窗口内容自动调整窗口大小
在创建WPF窗体时,如果固定窗体宽高,在要显示内容很少或者很多的情况下,窗体布局就会显得不怎么好看。如果能根据窗口内容自动调整窗口大小会显得比较适宜,这时我们需要用到Window.SizeToContent属性。下面以固定宽度,高度可变为例,新建一个WPF窗体应用程序SizeToContentDemo。1、窗体xaml<Window x:Class="SizeToConten...原创 2019-04-22 13:52:09 · 10713 阅读 · 2 评论 -
WPF实现ScrollViewer平滑滚动效果
WPF实现滚动条只要在控件外围加上ScrollViewer即可,但是滚动的时候没有动画效果,比较生硬,在滚动的时候添加过渡动画实现平滑滚动能给我们的软件增色不少。接下来,在上一篇博客(WPF使用FlowDocument加载文本并修改文本样式https://blog.youkuaiyun.com/dnazhd/article/details/89307386)的基础上进行修改,这里只展示垂直滚动效果,水平滚...原创 2019-04-15 16:52:24 · 7077 阅读 · 0 评论 -
WPF使用FlowDocument加载文本并修改文本样式
软件在展示软件协议或者免责声明的时候,一般使用RichTextBox控件。RichTextBox 控件可以显示纯文本、Unicode 纯文本或 RTF 格式文件。有时候目标计算机上没有安装office或者为避免版权问题,可使用读取txt文件的方式替代引用word插件来加载文件。这里使用高级文档功能FlowDocument来承载文本文件的内容和设置内容格式。1、首先在生成目录下新建Discl...原创 2019-04-15 10:54:56 · 5426 阅读 · 0 评论 -
WPF实现斜纹圆角进度条样式
运行效果:进度条样式:<!--进度条样式--><LinearGradientBrush x:Key="ProgressBar.Progress" StartPoint="0,-0.15" EndPoint="0.04,0.04" SpreadMethod="Reflect"> <GradientStop Color="Transparent" ...原创 2019-04-12 12:06:26 · 1825 阅读 · 0 评论