最近想弄个基于WPF的美女时钟,主要思想就是一个Image控件显示图片,添加一个Timer定时设置每秒更新一张图片。在弄的过程中发现一些小问题,在这里记下来留着以后查看!

  1:设置Iamge的Source属性的时候,在前台Xaml文件可以设置为路径的字符串格式,但是在后台cs文件需要构造一个Bitmap的实例赋值给Image的Source属性,还要注意实例化Uri类的时候需要传进来一个UriKind.Relative的枚举。如下:

        DateTime dtNowTime = DateTime.Now.ToLocalTime();//获取要加载的图片的名称string imgFileName = dtNowTime.Minute.ToString("00") + "_" + dtNowTime.Second.ToString("00") + ".jpg";BitmapImage bmpImage= new BitmapImage(new Uri("/Images/" + imgFileName, UriKind.Relative));imgMM.Source = bmpImage;

2:实现图片每秒更新的时候,需要注意不能用一个timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);事件直接实现更新,会报出“调用线程无法访问此对象,因为另外一个线程拥有此对象”的异常。

这时的解决方案是定义一个委托,用异步Dispatcher.Invoke()实现!项目的后台代码如下:

/// <summary>/// MainWindow.xaml 的交互逻辑/// </summary>public partial class MainWindow : Window{private delegate void TimerDispatcherDelegate();public MainWindow(){InitializeComponent();}Timer timer = null;private void Window_Loaded(object sender, RoutedEventArgs e){timer = new Timer();timer.Interval = 1000;timer.Enabled = true;timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);timer.Start();}void timer_Elapsed(object sender, ElapsedEventArgs e){this.Dispatcher.Invoke(DispatcherPriority.Normal, new TimerDispatcherDelegate(UpdataImage));}/// <summary>/// 更新图片/// </summary>void UpdataImage(){DateTime dtNowTime = DateTime.Now.ToLocalTime();//获取要加载的图片的名称string imgFileName = dtNowTime.Minute.ToString("00") + "_" + dtNowTime.Second.ToString("00") + ".jpg";//获取当前应用程序的根路径string rootPath = Directory.GetParent(Environment.CurrentDirectory).Parent.FullName.ToString();BitmapImage bmpImage= new BitmapImage(new Uri("/Images/" + imgFileName, UriKind.Relative));imgMM.Source = bmpImage;}}

其中图片位于根路径下的Image文件夹中,imgMM为前台页面中Image控件的Name

转载于:https://www.cnblogs.com/xiexingen/archive/2013/04/23/3037555.html

WPF图片切换问题(美女时钟)相关推荐

  1. WPF 动态切换按钮图片

    WPF动态切换按钮图片就是在鼠标移上去的时候显示另一张图片 首先先把三张图片放上去 第一张 第二张 第三张 然后给他们一个值,鼠标移上去的时候是true,显示图片,鼠标移开的时候显示false不显示图 ...

  2. 分享113个图片切换JS特效,总有一款适合您

    分享113个图片切换JS特效,总有一款适合您 113个图片切换JS特效下载链接:https://pan.baidu.com/s/1NNSP-DMf3n0PeNbdNd8jEg?pwd=sfwr  提取 ...

  3. c#学习系列之Application.StartupPath的用法(美女时钟的做法)

    Application.StartupPath是一个只读属性,是不可以设置的. Application.StarupPath获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称.既是Appli ...

  4. jQuery图片切换,图片幻灯片仿搜房网详情页图片相册切换

    jQuery图片切换,图片幻灯片仿搜房网详情页图片相册切换 1.可左右切换 2.可点击缩略图显示大图 3.缩略图多张滚动效果 直接贴代码 <div class="mod18" ...

  5. Ajax无刷新实现图片切换特效

    1.页面cs代码 using System; using System.Data; using System.Configuration; using System.Web; using System ...

  6. android 定时换图片,android 视频和图片切换并进行自动轮播

    刚入android没多久,遇到的比较郁闷的问题就是子线程主线程的问题,更改UI界面,本想做一个图片的轮播但是比较简单,然后就试试实现视频跟图片切换播放进行不停的循环播放.也用过不少控件,但是知其然不知 ...

  7. 手机触屏滑动图片切换插件swiper.js

    今天给大家分享一款手机触屏滑动图片切换插件swiper.js是一款swiper手机触屏滑动图片幻灯片,适合各种尺寸.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div ...

  8. javascript 实现图片切换,考虑平稳退化与行为结构分离

    最近在学习JavaScript DOM编程艺术,跟着学习把里面的一个demo 敲了,demo 是小玩意,但是在编程习惯上给了我很大的启发. 考虑"平稳退化":如果浏览器不支持或者禁 ...

  9. 精致3D图片切换效果,最适合企业产品展示

    这是一个精致的立体图片切换效果,特别适合企业产品展示,可立即用于实际项目中.支持导航和自动播放功能, 基于 CSS3 实现,推荐使用最新的 Chrome,Firefox 和 Safari 浏览器浏览效 ...

最新文章

  1. 深入java_深入Java Final
  2. 解决VirtualBox 上的XP 关机时重启 , 启动时蓝屏 ,点击电源选项蓝屏
  3. PHP草根论之设计模式-訪问者模式
  4. 服务器指纹识别之 DNS TXT
  5. 1132 Cut Integer (20 分)【难度: 简单 / 知识点: 模拟】
  6. Java Maven Profiles多环境一键部署
  7. web服务器-Apache
  8. java进度条_自学java你需要知道的,适合编程小白
  9. java 超构造函数_java中的超级构造函数
  10. 【Flink】Flink 反压机制 导致checkpoint 失败
  11. linux中fopen和open的区别,Linux下open与fopen的区别
  12. 检测表单是否合法,为什么不能用n++的探讨
  13. 初识delphi-spring-framework
  14. 二阶系统阶跃响应实验_实验2二阶系统的阶跃响应及稳定性分析实验
  15. FPGA——三段式状态机(1)
  16. u盘修复计算机系统,U盘启动盘修复win10系统的详细步骤
  17. 实现阿里云视频直播流程
  18. 使用 Marvelous Designer 为DAZ Studio 的 Genesis8 Female做衣服 1
  19. 学计算机白头,为何会有人“一夜白头” 它有科学依据吗?看完终于懂了
  20. 常用传感器信号测量汇总

热门文章

  1. 使用PHPEXCEL导入数据到数据库
  2. OAI数据集 | 申请Ing
  3. 职场励志小故事——【强盗师徒】
  4. java计算胜率_基于java的简单英雄联盟胜率计算
  5. git学习——设置gitlab、github默认push的用户名和密码
  6. VirtualBox运行中经常报错0x00000000不能为written解决办法(附上所需文件下载链接)
  7. UnityEditor学习——MenuItem
  8. 再见传统金融消息架构!Apache Pulsar 在平安证券的应用
  9. 四川麻将判断胡牌,找到要听的牌
  10. linux使用电池时候保持性能,Ubuntu 12.04 操作系统如何提高笔记本电池的寿命和性能...