自定义Image自动切换图像控件
做这么一个控件,图片自动切换,形成动画效果。

随便的码码,码完发现东西太少了,不过还算完善。
public class MyPictureBox : PictureBox
{ Timer timer = new Timer (); private int curPicIndex = ; private bool run = false; public bool Run
{
get { return run; }
set
{
run = value;
if (value)
timer.Start();
else
timer.Stop();
}
} private List<Image> imgList = new List<Image>(); private string[] imagepaths = null; public string[] ImagePaths
{
get { return imagepaths; }
set
{
imagepaths = value; if (imagepaths == null || imagepaths.Length == )
return; imgList.Clear(); foreach (string v in imagepaths)
{
try
{
imgList.Add(Image.FromFile(v));
}
catch
{ }
}
}
} //private map private int autoTimeInterval = ; public int AutoTimeInterval
{
get { return autoTimeInterval; }
set
{
autoTimeInterval = value;
if (value > && value < )
timer.Interval = value;
}
} public MyPictureBox()
{
base.SizeMode = PictureBoxSizeMode.StretchImage; timer = new Timer();
timer.Interval = autoTimeInterval;
timer.Tick += (s, e) =>
{
timer.Stop(); if (imgList != null && imgList.Count > )
{
int imgcount = imgList.Count;
if (imgcount > )
{
curPicIndex = (curPicIndex + ) % imgcount;
base.Image = imgList[curPicIndex];
} timer.Start();
}
};
}
}
MyPictureBox
控件写好了,只有把它放到窗体上才能正常使用。
在一个form窗体里这样写:
//loadingPic : 加载本地图片
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.ValidateNames = true;
dlg.Multiselect = true;
dlg.ShowDialog();
this.myPictureBox1.ImagePaths = dlg.FileNames;
} //stop : 图片停止切换
private void button2_Click(object sender, EventArgs e)
{
this.myPictureBox1.Run = false;
} //run : 图片开启切换
private void button3_Click(object sender, EventArgs e)
{
this.myPictureBox1.Run = true;
} // 设置图片切换的时间间隔
private void trackBar1_ValueChanged(object sender, EventArgs e)
{
this.myPictureBox1 .AutoTimeInterval = this.trackBar1.Value * ;
}
Form窗体内事件
代码很简单,但是这种模式用的地方很多,比如,自己做一个相册,可以自动切换照片;或者做一个简单的小游戏的时候,控制人物的行为,行走啊,战斗时从出手到战斗结束回归原状态的一系列动作啊等等(其实就是一帧一帧的图片连续播放,和flash一样的);或者是做水流的效果图(两三张就够了,水面的纹理发生改变时,就认为水是动的了),也可以说能想象到的一切简单的动态效果或者行为,都可以用Image控件实现。
比较简单,就这么多了。
最牛的工程,也是通过简单的模块堆积出来的,呵呵。
随手打,未仔细检查,如果有什么疑难杂症,见谅!
到了我这个年龄,已经进入特殊状态了:工作、女朋友,两手抓,两手都要硬,一个都不能放弃。本想偷空的时候好好码一篇,结果还是没时间,毕竟这么大了,也该找个伴了,有句话不是这么说嘛:时间要用在刀刃上。呵呵,我胡扯。
自定义Image自动切换图像控件的更多相关文章
- Android 自定义View之自绘控件
首先要提前声明一下,我对于自定义View的理解并不是很深,最近啃了几天guolin博主写的关于自定义View的博客,讲的非常棒,只不过涉及到源码和底层的一些东西,我自己就懵逼了,目前只是会了关于自定义 ...
- MFC中 自定义类访问主对话框控件的方法
之前一直在找有木有好点的方法.现在终于被我找到,收藏之~~~~~~ 在使用mfc的时候经常遇到自定义类访问主对话框控件的问题,例如自定义类中的方法要输出一段字符串到主对话框的EDIT控件.控制对话框的 ...
- [Swift通天遁地]九、拔剑吧-(3)创建多种自定义Segment分段样式的控件
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- pb自动注册ole控件
方法一: 1.手工注册OCX控件 将该控件随程序一起发布,然后,将此文件拷到windows\system,或者直接放在本运行目录,然后执行dos命令,run( "regsvr32 *. ...
- 【温故而知新-Javascript】图片效果(图像震动效果、闪烁效果、自动切换图像)
1.当鼠标指针经过图像时图像震动效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
- jquery 自动补全控件(支持IE6)待整理
自动补全控件(兼容IE6):http://bassistance.de/ download地址:http://jquery.bassistance.de/autocomplete/jquery.aut ...
- 【IOS界面布局】横竖屏切换和控件自适应(推荐)
[IOS界面布局]横竖屏切换和控件自适应(推荐) 分类: [MAC/IOS下开发]2013-11-06 15:14 8798人阅读 评论(0) 收藏 举报 横竖屏切换 自适应 第一种:通过人为的办法改 ...
- OpenCV在MFC图像控件内显示图像
1.依照文章<OpenCV+MFC显示图像>,完毕配置. 2.创建对应的图像控件,button控件. 3.进行类型转换. 在当前OpenCV2版本号内,图像格式为cv::Mat ,而该格式 ...
- 图像控件 ImageControl
图像控件 书:164 <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns: ...
随机推荐
- Extjs4.2或以上 使用自定义事件时报错问题
最近使用了extjs 自定义事件模型,代码如下: function Person(name) { this.name = name; this.addEvents('walk'); } Ext.ext ...
- input文本框去除单击时的边框的方法
前端开发写的input文本框标签后单击时可以看到有边框,去除边框的方法: input{ outline:medium; }
- 编译系统中BNF: Backus-Naur Form
巴科斯范式(BNF: Backus-Naur Form 的缩写)是由 John Backus 和 Peter Naur 首次引入一种形式化符号来描述给定语言的语法. 简称为:BNF符号. 现在,几乎每 ...
- MYSQL中 ENUM 类型
MYSQL中 ENUM 类型的详细解释 ENUM类型 ENUM 是一个字符串对象,其值通常选自一个允许值列表中,该列表在表创建时的列规格说明中被明确地列举. 在下列某些情况下,值也可以是空串(&quo ...
- CUTE-WRV2.1+TCP core(COM5402)的TCP带宽测试
问题的提出 测试TCP的带宽,硬件平台CUTE-WRV2.1,固件版本WRPCV3.0+COM5402. 代码.工具及实现 1. 在固件中,增加模块,收到TCP数据包后不断地往外发数: library ...
- 使用pango-Cairo列出系统中的有效字体
使用pango-Cairo列出系统中的有效字体,代码来源于gtk-app-devel-list fonts list using pango #include <glib.h> #incl ...
- Ubuntu系统下的第一个console程序
进入自己喜欢的目录,前面步骤和windows基本一致,只简单描述下 执行 dotnet new 然后执行 dotnet restore 然后执行 dotnet run 第一次未编译,会自动编译,然后可 ...
- PostgreSQL基础整理(一)
1. 创建数据库: 1)登录bin目录,createdb.exe -U postgres -e mydb; -U 表示本次操作的登录用户名,如果不写会取windows登录的账户,如Administra ...
- Java设计模式10:观察者模式
观察者模式 观察者模式也叫作发布-订阅模式,也就是事件监听机制.观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,使他 ...
- Ubuntu Desktop开发生产环境搭建
Ubuntu Desktop开发生产环境搭建 1 开发生产环境搭建 在本节内容开始前,先定义一下使用场合,没有哪种系统或者设备是万能的,都有它的优点和缺点,能够在具体的使用场景,根据自身的需求来取 ...