WPF 释放嵌入资源】的更多相关文章

资源文件名称:默认命名空间.文件名 || 默认命名空间.文件夹名.文件名 /// <summary> /// 提取文件 /// </summary> /// <param name="resFileName">资源文件名称(资源文件名称必须包含目录,目录间用“.”隔开,最外层是项目默认命名空间)</param> /// <param name="outputFile">输出文件</param>…
[System.Runtime.InteropServices.DllImport("kernel32.dll")]        public static extern bool SetProcessWorkingSetSize(IntPtr proc, int min, int max);        public void FlushMemory()        {            GC.Collect();            GC.WaitForPendingF…
介绍 操作系统中存在一个内存管理器(Memory Manager),简称MM,它负责管理内存. MM提供的服务:应用程序可以向MM申请一块指定大小的内存(借出),用完之后应用程序应该释放(还回). 所需头文件 <stdlib.h> 如: void* p = malloc(1024);//申请,从MMM借出内存 free(p); //释放,还回MM 1.MM管理的内存区域成为堆(Heap). 2.只要应用malloc,MM都会借出,如应用不归还,MM也不会主动要求你free.如果有个应用不停地m…
原文:WPF 内存释放 在WPF 项目中引用到Transitionals 实现图片转场特效,发现每次图片转场内存都会增加,在每次转场后进行内存压缩 记录 解决方案如下: GC.Collect(); GC.WaitForPendingFinalizers(); if (Environment.OSVersion.Platform == PlatformID.Win32NT) { SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurre…
使用Image控件显示图片后,虽然自己释放了图片资源,Image.Source =null 了一下,但是图片实际没有释放.解决方案:修改加载方式~        public static BitmapImage GetImage(string imagePath)        {            BitmapImage bitmap = new BitmapImage();            if (File.Exists(imagePath))            {     …
相信用过WPF的BitmapImage的,都在用类似这样的代码来解决文件无法删除的问题! 如果看看msdn上简单的描述,可以看到这样的说明: 如果 StreamSource 和 UriSource 均设置,则忽略 StreamSource 值. 如果要在创建 BitmapImage 后关闭流,请将 CacheOption 属性设置为 BitmapCacheOption.OnLoad. 默认 OnDemand 缓存选项保留对流的访问,直至需要位图并且垃圾回收器执行清理为止. static clas…
源:zhantianyou CODE private BitmapImage ReturnBitmap(string destFile) { // Read byte[] from png file BinaryReader binReader = new BinaryReader(File.Open(destFile, FileMode.Open)); FileInfo fileInfo = new FileInfo(destFile); byte[] bytes = binReader.Re…
WPF中Style的使用 Styel在英文中解释为”样式“,在Web开发中,css为层叠样式表,自从.net3.0推出WPF以来,WPF也有样式一说,通过设置样式,使其WPF控件外观更加美化同时减少了大量的复杂属性的设置. 在WPF中,设置外观样式我们有很多种方式,比如通过设置控件的属性来控制控件的外观样式:或者通过在每一个控件中分别设置Style:或者通过在整个Window.Resource中设置Style,又或者在App.xaml的Application.Resource设置Style. 在…
之前一篇<工欲善其事,必先利其器.VS2013全攻略(安装,技巧,快捷键,插件)!> 看到很多朋友回复和支持,非常感谢,尤其是一些拍砖的喷油,感谢你们的批评,受益良多. 我第一份工作便是WPF的开发,一直到现在都非常喜欢这门技术,从懵懵懂懂到现在有一些WPF开发资历,也算是经历了一段坎坷的过程.我的朋友看到我写了VS2013的全攻略,他就推荐我写一个WPF篇,我想了下,的确很多朋友初接触WPF的时候难免会觉得WPF开发十分困难,归其原因,很多时候是出错后并不知道如何调试毫无头绪.下面我便顺着我…
若干年前,老周写了几篇有关MEF的烂文,简单地说,MEF是一种动态扩展技术,比如可以指定以某个程序集或某个目录为搜索范围,应用程序在运行时会自动搜索符合条件的类型,并自动完成导入,这样做的好处是,主程序的代码不用改来改去,只需要把扩展的程序集放到对应的目录下就可以了. MEF不仅可以用于“看不见”的类型扩展上,对于“看得见”的类型照样适用,比如窗口.控件之属,你要是够牛逼的话,甚至可以把它用到ASP.NET上,不过这个玩意儿估计要配合重写路由规则才能实现,根据URL传的参数来跳转到具体的页面.…
WPF程序将DLL嵌入到EXE的两种方法 这一篇可以看作是<Visual Studio 版本转换工具WPF版开源了>的续,关于<Visual Studio 版本转换工具WPF版开源了>可以参看地下地址(两篇是一样的): 开源中国 http://my.oschina.net/chinesedragon/blog/308336 CNBLOGS http://www.cnblogs.com/luoshupeng/p/3946635.html ** 博客园的Markdown编辑器真的不行,…
有些程序运行的时候,可能调用外部的dll,用户使用时可能会不小心丢失这些dll,导致程序无法正常运行,因此可以考虑将这些dll嵌入到资源中,启动时自动释放.对于托管的dll,我们可以用打包软件合成一个exe(例如利用Imerge),但是对于一些用C++等写的非托管dll,就比较麻烦.在这种情况下,大家可以考虑本文介绍的方法. 1.将需要用到的dll文件嵌入资源文件中. (1)将需要用到的dll文件拷贝到工程中:   (2)修改“生成操作”为“嵌入的资源”: 这样就完成了dll文件嵌入资源的过程.…
1 引言 使用VC编写的容器类编辑器,很多都可以挂接ActiveX控件,因为基于COM的ActiveX控件不仅封装性不错,还可以显示一些不错的界面图元. 但是随着技术不断的进步,已被抛弃的ActiveX早已无法满足现代客户对审美的新需求,所以我们需要在这条道路上不断的独辟蹊径,今天提到的使用ActiveX装载WPF控件就是其中一条思路. WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framewor…
说明:本系列基本上是<WPF揭秘>的读书笔记.在结构安排与文章内容上参照<WPF揭秘>的编排,对内容进行了总结并加入一些个人理解. 这部分内容主要介绍Silverlight与浏览器的交互,包括使用JavaScript来控制Silverlight.这其中起主要作用的是Silverlight插件与Silverlight.js这个文件. 首先我们要展示怎样在浏览器中嵌入Silverlight对象,有两种方式实现这个目的,第一种是使用JavaScript加载Silverlight控件,这涉…
一.窗体类基本概念 对于WPF应用程序,在Visual Studio和Expression Blend中,自定义的窗体均继承System.Windows.Window类.用户通过窗口与 Windows Presentation Foundation (WPF) 独立应用程序进行交互. 窗口的主要用途是承载可视化数据并使用户可以与数据进行交互的内容.独立 WPF 应用程序使用 Window 类来提供它们自己的窗口.在 WPF 中,可以使用代码或 XAML 标记来实现窗口的外观和行为.我们这里定义的…
一.MVVM模式介绍: 在网上看过很多的MVVM中各块的介绍,感觉很混乱.找到如下的描述感觉很合理,也很好理解(https://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx). 二.模式分析 在项目中使用这个模型,感觉有2点需要理解透,不然项目运行中肯定得乱套. 如上图描述的模块的角色和职责. 上面描述的很清楚了,但是几点地方总结下: 1)有些地方将Model看成是只有数据的对象,但是这里显然不是. 2)View 的Ui L…
目录 1.WPF快捷键实现方式 2.全局快捷键设置界面 3.Windows API调用 4.注册全局快捷键 5.快捷键触发 WPF快捷键实现方式 WPF快捷键实现主要有自定义快捷键命令和全局快捷键两种方式. 自定义快捷键命令方式是通过KeyBinding为命令绑定快捷键,按键组合可使用“+”进行连接.可以通过Modifiers+Key和Gesture两种方式定义快捷键组合.可以任选其一进行使用,MSDN中建议使用Gesture方式定义以免发生混淆. <Window.InputBindings>…
这篇博客将介绍一些提高WPF程序的建议(水平有限,如果建议有误,请指正.) 1. 加快WPF程序的启动速度: (1).减少需要显示的元素数量,去除不需要或者冗余的XAML元素代码. (2).使用UI虚拟化,只显示当前需要显示的元素. (3).不要把不要显示的自定义控件隐藏在主界面中,虽然它们不会显示出来,但是程序启动时还是会去计算自定义控件所需的空间和位置. 2. 耗时操作放在放在非UI线程上处理,保持UI的顺畅.处理完成后如果需要在UI上展示,调用Dispatcher.BeginInoke()…
WPF技术的主要特点是数据驱动UI,所以在使用WPF技术开发的过程中是以数据为核心的,WPF提供了数据绑定机制,当数据发生变化时,WPF会自动发出通知去更新UI. 恰当的模式可以让我们轻松达到“高内聚低耦合”,MVVM就是为WPF量身定做的,该模式充分利用了WPF的数据绑定机制,最大限度地降低了XAML和CS文件的耦合度,即UI显示和逻辑代码的耦合度,如需更换界面时,逻辑代码修改很少,甚至不用修改.与WinForm开发相比,我们一般在后置代码中会使用控件的名字来操作控件的属性来更新UI,而在WP…
公司现在在研发基于.Net中WPF技术的产品,由于要兼容旧有产品,比如一些旧有的Win32程序.第三方的Win32程序等等,还要实现自动登录这些外部Win32程序,因此必须能够将这些程序整合到我们的系统中来,让使用者看起来它们好像是一个程序. 在MSDN中有专门的章节提到了在WPF中嵌入Win32控件的办法,那就是使用 HwndHost ,只要把 Win32控件的句柄传递给 HwndHost 就可以了.MSDN中的例子演示的都是在同一个进程内创建的 Win32控件,我一开始认为只要通过FindW…
一.引言 WPF绑定使得原本需要多行代码实现的功能,现在只需要简单的XAML代码就可以完成之前多行后台代码实现的功能.WPF绑定可以理解为一种关系,该关系告诉WPF从一个源对象提取一些信息,并将这些信息来设置目标对象的属性.目标属性总是依赖属性.然而,源对象可以是任何内容,可以是一个WPF元素.或ADO.NET数据对象或自定义的数据对象等.下面详细介绍了WPF绑定中的相关知识点. 二.绑定元素对象 2.1 如何实现绑定元素对象 这里首先介绍绑定最简单的情况——绑定元素对象,即数据源是一个WPF元…
一.同一资源: 二.先上软件界面: (1)wpf界面: 在wpf中实现这样类似web风格的软件界面就不用我多说了,在wpf实现这样的风格是很简单的,完全像网页设计一样的. (2)winform界面 在winfrom模式下开发桌面程序,听到最多是不简单,而且有可能得不偿失,因为需要通过大量的重绘paint事件,很耗性能.但我告诉你我这个布局绝对没有用重绘实现,用的还是 wpf的老祖宗panel实现的,虽然原理和网页背景一样小像素图片平铺,但界面加载的时候丝毫没有闪屏现象.请看代码: partial…
如果你在创建项目的时候细心的查看一下项目的结构,你会发现里面有一个App.xaml,一见到App我们知道是应用程序的关键了配置了,当然,WPF的启动窗体也在这里面设置的. 我们可以在App的中配置启动页,如下所示: 当然,我们还可以再App.cs重写OnStartUp来设置要启动的页面来设置启动的页面,如: public partial class App : Application { protected override void OnStartup(StartupEventArgs e)…
起因 项目上需要对Canvas中的控件添加调整大小功能,即能在控件的四个角和四条边上可进行相应的拖动,类似Windows窗口那种.于是在参考以前同事写的代码基础上,完成了该功能. 代码实现 Adorner 我们是给现有的控件添加功能,属于装饰功能.当然首先想到的就是Adorner.在MSDN中Adorner的介绍如下: 装饰器是一个绑定到 UIElement 的自定义 FrameworkElement. 装饰器呈现在装饰器层中,它是一个呈现图面,始终位于装饰元素或装饰元素集合的顶部:呈现装饰器独…
介绍 本文是接着上文<C# WPF 显示图片和视频显示 EmuguCv.AForge.Net测试>写的,建议先看下上文,因为有些代码还需要了解. 增添 接着上文的代码,我们可以在事件处理方法videoSource_NewFrame 里面加一些对每帧图片的处理 . private void videoSource_NewFrame(object sender, NewFrameEventArgs eventArgs) { //eventArgs.Frame.Save(stream, System…
1.什么是路由事件 已下为MSDN中的定义 功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件. 实现定义:路由事件是一个 CLR 事件,可以由 RoutedEvent 类的实例提供支持并由 Windows Presentation Foundation (WPF) 事件系统来处理.典型的 WPF 应用程序中包含许多元素. 无论这些元素是在代码中创建的还是在 XAML 中声明的,它们构成了一个彼此关联的元素树. 2.冒泡事件和隧道事件 根据事件…
在WPF中的实现和WinForm中的实现99%相似,将要实现接受拖拽释放的控件添加DragEnter事件和Drop事件,本例中控件Grid grid作为接受控件,添加事件操作如下: private void grid_Drop(object sender, DragEventArgs e){    string fileName = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();    //…
  各位热爱WPF编程小伙伴不可避免的会遇到将ppt嵌入到自己编写的软件,可是有时候会遇到错误,此错误值出现在卸载office2013并安装其他版本office时候会出现.这是由于某些机器上office不能完全卸载造成的,倒是com口不能释放完全.由于office2013在某些机器环境下卸载不完全,在安装其他版本office后,调用ppt的com组件会导致弹窗错误:“无法将型别 'System.__ComObject' 的 COM 对象转换为接口型别 'Microsoft.Office.Inte…
关于性能 一.    关于硬件加速 1.对于大多数图形硬件而言,大型图面是指达到 2048x2048 或 4096x4096 像素大小的图面. 二.    合理的布局 1.简单地说,布局是一个递归系统,实现在屏幕上对元素进行大小调整.定位和绘制. 2.集合中的子级数目越多,所需的计算量就越大 3.使用简洁的布局面板,Grid 或 StackPanel 控件提供的功能比 Canvas 控件多很多. 功能大大提高的代价是性能成本也大大提高. 4.更新而不替换 RenderTransform. 5.从…
样式(Styles)是组织和重用格式化选项的重要工具.不是使用重复的标记填充XAML,以设置诸如边距.颜色及字体等细节,而可以创建一系列封装所有这些细节的样式.然后可以在需要之处通过一个属性应用样式. 行为(behavior)是一个重用用户界面代码的工具,它封装了一些通用的UI功能.如果具有适当的行为,可以使用一两行XAML标记将其附加到一个元素,从而可以节省编写和调试代码的工作. 创建样式对象 <Window.Resources> <Style x:Key="BigFontB…