[.NET] 如何利用GDI画一个箭头的动画
2010-09-06 10:34
357 查看
今天在论坛看到有人问如何在Win Form上画一个箭头
刚好我也需要用到一些GDI的学习,就把这个当成自己的练习做出来
我的思路很简单,首先利用OnPaint事件,画一个没有动画的箭头
然后再来思考要怎么样让箭头变成动画
我的想法是利用Thread,改变画图座标就可以达成这个效果
同时想到需要在最后才显示两个箭头,那就多了个判断的Flag
再来做一个Loop,让箭头一直画,这样就完成了一个简单的动画
刚好我也需要用到一些GDI的学习,就把这个当成自己的练习做出来
我的思路很简单,首先利用OnPaint事件,画一个没有动画的箭头
然后再来思考要怎么样让箭头变成动画
我的想法是利用Thread,改变画图座标就可以达成这个效果
同时想到需要在最后才显示两个箭头,那就多了个判断的Flag
再来做一个Loop,让箭头一直画,这样就完成了一个简单的动画
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace WinTest2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } bool isRun; bool isDrawArrow; int lineX = 10; protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Red), 3), 10, 30, lineX, 30); if (isDrawArrow) { e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Red), 3), 90, 20, 100, 30); e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Red), 3), 90, 40, 100, 30); } } private void Form1_Load(object sender, EventArgs e) { Thread t = new Thread(new ThreadStart(Animation)); t.Start(); isRun = true; isDrawArrow = false; } void Animation() { while (isRun) { this.Invalidate(); Thread.Sleep(200); for (int i = 0; i < 10; i++) { lineX = 10 + i * 10; this.Invalidate(); Thread.Sleep(200); } isDrawArrow = true; this.Invalidate(); Thread.Sleep(2000); isDrawArrow = false; } } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { isRun = false; } } }
相关文章推荐
- iOS如何利用一句话完成转场动画
- 如何在.Net版本UEditor中添加一个普通按钮
- iOS开发封装篇-利用CAShapeLayer和绘图封装一个动画按钮
- .Net程序开发中一个较为隐蔽的GDI泄露探析
- 如何利用单台计算机(可能只有一个或没有串口)学习VC串口编程
- PHP如何判断一个gif图片是否为动画?
- 如何利用Cocos2d-x开发一个游戏?
- 利用属性动画实现一个不一样的SplashView
- 【Cocos2d js系列】利用cc.RotateBy或者RotateTo旋转一个对象以后如何复原
- 如何不利用一个额外的变量来达到交换两个变量值的目的-------位上的异或运算
- 【译】如何用Swift实现一个好玩的弹性动画
- 如何利用数据库内容建立一个下拉式列表?
- 如何利用家里的宽带搭建一个自己的网站
- .NET 2.0 中,两种如何创建一个线程安全的 UI 的方法
- 利用MYSQL的C API编程,如何确定一个数据库/表是否存在???
- 如何利用Capstone引擎写一个Android反汇编工具
- 如何判断一个DOM元素正在动画,一个CSS“阻塞”JS的例子
- 如何在.net中向用户返回一个http状态码(转自http://www.chinaitpower.com/A/2004-10-27/152846.html)
- 带动画的自定义view——做一个移动的箭头