一种基于WPF减少图片内存占用的方法、装置及其相关介质制造方法及图纸

技术编号:38759337 阅读:20 留言:0更新日期:2023-09-10 09:44
本发明专利技术公开了一种基于WPF减少图片内存占用的方法、装置及其相关介质,该方法包括创建虚拟化自动换行面板控件并设置到WPF的列表集合控件,得到第一设置结果;创建图片缩略图值转换器并处理得到缩略图,将所述缩略图赋值到图片控件;将所述图片控件添加到创建的数据模板后设置到所述列表集合控件,得到第二设置结果;其中,所述图片控件绑定图片数据;将所述图片数据设置到所述列表集合控件,得到第三设置结果;基于所述第一设置结果、第二设置结果和第三设置结果处理得到图片输出结果。本发明专利技术通过结合第一设置结果、第二设置结果和第三设置结果来避免WPF桌面应用程序的列表集合控件显示大量图片数据时出现内存闪退的问题,同时实现了自动换行的功能。现了自动换行的功能。现了自动换行的功能。

【技术实现步骤摘要】
一种基于WPF减少图片内存占用的方法、装置及其相关介质


[0001]本专利技术涉及图片显示
,特别涉及一种基于WPF减少图片内存占用的方法、装置及其相关介质。

技术介绍

[0002]现在技术中利用WPF桌面应用程序(WPF指的是一个基于windows.NETFramework的用户界面框架,用于用户图形界面开发,底层基于DirectX进行图形界面渲染,支持2D和3D矢量渲染,使用的是C#编程,下同)的列表集合控件中自带的UI虚拟化控件和虚拟化堆栈面板控件来显示大量图片数据,但是存在缺点,即只能显示一行或者一列,并且在显示大量图片数据时,滚动条滚动过程到达内存峰值,容易导致应用程序闪退。此时,出现了相关的解决方案,即在列表集合控件中使用不带UI虚拟化的网格布局控件或者自动换行布局控件来显示大量图片数据,避免了内存闪退问题,但需要手动去点击翻页按钮进行翻页显示,导致浏览图片数据不方便。

技术实现思路

[0003]本专利技术实施例提供了一种基于WPF减少图片内存占用的方法、装置及其相关介质,旨在解决现有技术中利用WPF桌面应用程序的列表集合控件来显示大量图片数据,容易导致内存闪退以及无法自动换行的问题。
[0004]第一方面,本专利技术实施例提供了一种基于WPF减少图片内存占用的方法,包括:
[0005]利用虚拟化堆栈面板控件和自动换行面板控件创建虚拟化自动换行面板控件;
[0006]将所述虚拟化自动换行面板控件设置到WPF的列表集合控件的数据项布局面板控件,得到第一设置结果;
[0007]继承多值转换器接口以创建图片缩略图值转换器,并利用所述图片缩略图值转换器处理所述列表集合控件的滚动条事件,得到滚动条处理结果;
[0008]根据所述滚动条处理结果进行图片解码以生成缩略图,并将所述缩略图赋值到图片控件;
[0009]将所述图片控件添加到创建的数据模板,并将所述数据模板设置到所述列表集合控件的数据项模板,得到第二设置结果;其中,所述图片控件绑定图片数据和所述图片缩略图值转换器;
[0010]将所述图片数据设置到所述列表集合控件的数据集合源,得到第三设置结果;
[0011]基于所述第一设置结果、第二设置结果和第三设置结果,对图片进行自动换行和异步解码,得到图片输出结果。
[0012]第二方面,本专利技术实施例提供了一种基于WPF减少图片内存占用的装置,包括:
[0013]数据创建单元,用于利用虚拟化堆栈面板控件和自动换行面板控件创建虚拟化自动换行面板控件;
[0014]第一设置单元,用于将所述虚拟化自动换行面板控件设置到WPF的列表集合控件
的数据项布局面板控件,得到第一设置结果;
[0015]数据处理单元,用于继承多值转换器接口以创建图片缩略图值转换器,并利用所述图片缩略图值转换器处理所述列表集合控件的滚动条事件,得到滚动条处理结果;
[0016]数据解码单元,用于根据所述滚动条处理结果进行图片解码以生成缩略图,并将所述缩略图赋值到图片控件;
[0017]第二设置单元,用于将所述图片控件添加到创建的数据模板,并将所述数据模板设置到所述列表集合控件的数据项模板,得到第二设置结果;其中,所述图片控件绑定图片数据和所述图片缩略图值转换器;
[0018]第三设置单元,用于将所述图片数据设置到所述列表集合控件的数据集合源,得到第三设置结果;
[0019]数据输出单元,用于基于所述第一设置结果、第二设置结果和第三设置结果,对图片进行自动换行和异步解码,得到图片输出结果。
[0020]第三方面,本专利技术实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述第一方面的基于WPF减少图片内存占用的方法。
[0021]第四方面,本专利技术实施例提供了一种计算机可读存储介质,其中,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现所述第一方面的基于WPF减少图片内存占用的方法。
[0022]本专利技术实施例提供一种基于WPF减少图片内存占用的方法,包括创建虚拟化自动换行面板控件并将其设置到WPF的列表集合控件,得到第一设置结果;创建图片缩略图值转换器并对其处理得到缩略图,将所述缩略图赋值到图片控件;将所述图片控件添加到创建的数据模板后设置到所述列表集合控件,得到第二设置结果;其中,所述图片控件绑定图片数据;将所述图片数据设置到所述列表集合控件,得到第三设置结果;基于所述第一设置结果、第二设置结果和第三设置结果处理得到图片输出结果。本专利技术通过结合第一设置结果、第二设置结果和第三设置结果来避免WPF桌面应用程序的列表集合控件显示大量图片数据时出现内存闪退的问题,同时实现了自动换行的功能。
[0023]本专利技术实施例还提供一种基于WPF减少图片内存占用的装置、计算机设备和存储介质,同样具有上述有益效果。
附图说明
[0024]为了更清楚地说明本专利技术实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0025]图1为本专利技术实施例提供的一种基于WPF减少图片内存占用的方法的流程示意图;
[0026]图2为本专利技术实施例提供的图片显示效果图一;
[0027]图3为本专利技术实施例提供的图片显示效果图二;
[0028]图4为本专利技术实施例提供的图片显示效果图三;
[0029]图5为本专利技术实施例提供的WPF桌面应用程序内存显示图一;
[0030]图6为本专利技术实施例提供的WPF桌面应用程序内存显示图二;
[0031]图7为本专利技术实施例提供的一种基于WPF减少图片内存占用的装置的示意性框图。
具体实施方式
[0032]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0033]应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0034]还应当理解,在此本专利技术说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本专利技术。如在本专利技术说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0035]还应当进一步理解,在本专利技术说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于WPF减少图片内存占用的方法,其特征在于,包括:利用虚拟化堆栈面板控件和自动换行面板控件创建虚拟化自动换行面板控件;将所述虚拟化自动换行面板控件设置到WPF的列表集合控件的数据项布局面板控件,得到第一设置结果;继承多值转换器接口以创建图片缩略图值转换器,并利用所述图片缩略图值转换器处理所述列表集合控件的滚动条事件,得到滚动条处理结果;根据所述滚动条处理结果进行图片解码以生成缩略图,并将所述缩略图赋值到图片控件;将所述图片控件添加到创建的数据模板,并将所述数据模板设置到所述列表集合控件的数据项模板,得到第二设置结果;其中,所述图片控件绑定图片数据和所述图片缩略图值转换器;将所述图片数据设置到所述列表集合控件的数据集合源,得到第三设置结果;基于所述第一设置结果、第二设置结果和第三设置结果,对图片进行自动换行和异步解码,得到图片输出结果。2.根据权利要求1所述的基于WPF减少图片内存占用的方法,其特征在于,所述利用虚拟化堆栈面板控件和自动换行面板控件创建虚拟化自动换行面板控件,包括:复制所述虚拟化堆栈面板控件的源代码,得到第一基础面板控件;获取所述第一基础面板控件的滚动视图控件,并将所述滚动视图控件的水平滚动条设置为隐藏和禁用,得到第二基础面板控件;根据所述自动换行面板控件分别对所述第二基础面板控件中的测量空间布局大小方法和排列控件最终区域方法进行修改,得到所述虚拟化自动换行面板控件。3.根据权利要求2所述的基于WPF减少图片内存占用的方法,其特征在于,所述利用虚拟化堆栈面板控件和自动换行面板控件创建虚拟化自动换行面板控件,还包括:根据所述虚拟化自动换行面板控件遍历得到所述列表集合控件中的列表项控件;判断所述列表项控件的坐标和大小范围是否在可见区域内,若所述列表项控件的坐标和大小范围均在可见区域内,则再次判断所述列表项控件是否存在所述列表集合控件中,若不存在,则创建所述列表项控件并添加到所述列表集合控件;若存在,则无需操作;若所述列表项控件的坐标和大小范围均不在可见区域内,则将所述列表项控件从所述列表集合控件进行删除。4.根据权利要求1所述的基于WPF减少图片内存占用的方法,其特征在于,所述继承多值转换器接口以创建图片缩略图值转换器,并利用所述图片缩略图值转换器处理所述列表集合控件的滚动条事件,得到滚动条处理结果,包括:利用所述图片缩略图值转换器创建静态线程和字典;通过所述多值转换器接口中的转换方法,传递所述图片数据和图片控件以添加到所述字典;其中,所述图片控件作为所述字典的键,所述图片数据作为字典的值;利用视觉树帮助类中的获取父类方法获取所述图片控件的父类,并向上递归得到所述列表集合控件上的滚动视图控件;利用视觉树帮助类中的获取子类方法获取所述滚动视图控件的子类,并向下递归得到垂直滚动条;
通过在所述垂直滚动条上注册鼠标抬起事件,利用所述鼠标抬起事件发送信号通知所述静态线程从所述字典中读取数据进行图片解码,同时设置所述图片控件为默认静态图片并判断鼠标是否按下且光标悬浮在所述垂直滚动条上,若是,则不进行图片解码;若否,则直接发送信号通知所述静态线程从所述字典中读取数据...

【专利技术属性】
技术研发人员:谭志文
申请(专利权)人:深圳软牛科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1