C#(WPF)按钮图片不显示,壁纸切换功能
来源:互联网 发布:淘宝o2o平台 编辑:程序博客网 时间:2024/04/30 18:15
最近开始做一个懒人桌面的项目,于是开始重头学习C#,今天实现了桌面壁纸的切换功能,代码很少,但是遇到了很多基础的问题,我全部列在这里,供小伙伴们查看,少走弯路(我的环境是vs2013+wpf+.net4.0)。
1. 给按钮添加了图片,设计视图里能显示,但是运行时就是看不到图片显示。
弄了半天才发现需要把资源文件添加到工程里,这里我们直接拖入到工程里的引用里就行了。
如果还不行,你要试着重新生成解决方案
2. 相对路径问题
为了程序的可移植性,我在程序里使用了相对路径,但是又出现了问题,切换壁纸无效。又是想了半天,才肯定是路径问题,这里是因为xmal文件和程序运行时,相对路径的当前目录改变了的原因。之前我为按钮添加图片时,相对路径的当前目录是工程当前所在目录
所以我要使用resource文件夹里的图片,直接使用相对路径"Resource\Icon\next.png"就行了,但是到了切换壁纸的时候,因为这时程序开始运行了,所以此时的相对路径的当前目录改变到了debug目录,这时再要使用Resource文件夹里的文件,就不能再直接使用"Resource\Icon\next.png",得先回到Resource文件夹所在的目录在调用,所以这里得这样使用”..\\..\\Resource\\wallpaper.bmp“(这里为什么有两个斜杠?理由是转移字符,这里也可以这样写@“..\..\Resource\wallpaper.bmp”,不懂自己google)
3. 如何进行壁纸切换
调用windows的user32.dll,来实现壁纸切换,但是这里必须注意,这个api只支持bmp格式的图片,所以,要想切换,得先把图片格式通过程序改为bmp,主要程序如下
//取出将要替换的壁纸 string wallpaper = "..\\..\\Resource\\Wallpaper\\" + allimg[current_img_num];//取出要切换的壁纸路径 //将指针指向下一张壁纸,若是这个数字超过了列表的长度,说明壁纸已经到达最后一张,这时将其置为1,重头开始 if (current_img_num++ >=allimg.Count()-1) { current_img_num=1; } string tempFile = "..\\..\\Resource\\wallpaper.bmp";//因为壁纸必须为bmp格式,所以设置一个bmp的暂存文件 System.Drawing.Image image = System.Drawing.Image.FromFile(wallpaper); image.Save(tempFile, System.Drawing.Imaging.ImageFormat.Bmp);//将要切换的壁纸 wallpaper = tempFile; SystemParametersInfo(20, 0, wallpaper, 0x2);//将壁纸切换为Wallpaper
注意System.Drawing.Image这个类必须要引用System.Drawing这个命名空间才行
程序比较简单欢迎下载LazyDeskV1.0。
- C#(WPF)按钮图片不显示,壁纸切换功能
- WPF Button按钮简单切换图片
- (C#)WPF页面显示图片
- wpf设计器显示图片,运行却不显示图片
- QT功能1:点击按钮,显示图片
- 按钮图片表单显示不对齐
- 多语言切换 图片不显示
- WPF中让窗体不显示最大化,最小化,关闭按钮
- WPF 如何制作图片按钮(imageButton)
- WPF图片按钮
- WPF 动态图片切换
- 使用:target实现点击按钮切换图片的功能(纯CSS)
- cocos2d-x中按钮点击后切换图片功能
- KindEditor不兼容Firefox出现添加图片按钮不显示
- QT音乐播放器之-按钮切换显示图片
- WPF带给你不一样的显示图片功能效果!
- WPF设置图片显示不出来检查思路
- C语言切换壁纸和播放音乐
- Spring @Transactional 到底是怎么工作的?
- 30.自定义UITableViewCell第一章
- 《Linux命令、编辑器与Shell编程》读书笔记4.3-其他数据文件处理命令(tr,sort,cut,paste,join,uniq,split)
- 2015 CCPC Ancient Go
- 2016 JAVA与Android面试题整理
- C#(WPF)按钮图片不显示,壁纸切换功能
- java集合
- magento 中常见的js冲突
- Node.js(4) -- 七天学会node.js(2)
- hdu 1385 Minimum Transport Cost(Floyd打印路径)
- vijos--P1211--生日日数(纯模拟)
- MIT算法导论-第11讲-动态规划
- 为什么匿名内部类和局部内部类只能访问final变量
- Linux进程冻结技术