知识大全 利用Visual C# 2005制作简单动画效果
Posted 知
篇首语:观书散遗帙,探古穷至妙。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 利用Visual C# 2005制作简单动画效果相关的知识,希望对你有一定的参考价值。
利用Visual C# 2005制作简单动画效果 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
一般的 Windows Form 通常是运用各种控件来显示数据 然而如果您希望在窗体中加入特殊效果来凸显数据内容 那么图形与动画将是非常不错的选择 一般来说 我们会使用 Net Framework中 的 GDI+ 函式库来制作图形与动画效果 在 GDI+ 还没有推出之前 如果要产生二维的 向量图形 影像 以及印刷样式 必须使用旧版操作系统中的GDI 新的 GDI+ 是 Windows XP 的一部份 除了加入新功能之外 还最佳化现有功能以便具体改进 GDI(也就是旧版 Windows 包含的绘图装置接口)的效能 程序范例 图表 图表 图表我们的程序范例示范了三种动画效果 分别是 眨眼效果 弹跳的球 以及文字闪烁 当程序执行时会自动展示第一种眨眼效果 如图表 到 所示 运用之前「如何利用程序代码动态存取组件信息」的技巧 将组件的 AsmFQName 属性值指派给窗体的 Text 属性 并将先前已经加入项目资源的四张图片名称指派给数组 之后就使用此数组来示范眨眼效果 程序代码撰写于窗体的Load事件处理例程中 如下所示
private void Blog_DemoForm _Load(object sender EventArgs e) AssemblyInfoClass myAssembly = new AssemblyInfoClass(); this Text = myAssembly AsmFQName; // 指派数组成员 arrImages[ ] = Properties Resources Eye ; arrImages[ ] = Properties Resources Eye ; arrImages[ ] = Properties Resources Eye ; arrImages[ ] = Properties Resources Eye ; 图表 如果您要使用 Visual C# 来制作「关于」对话框 建议先使用Visual Studio 所提供的模板来产生关于对话框窗体 然后再自订窗体所要呈现的内容(如图表 所示) 在此 我们选择将组件的相关信息填入窗体对应的控件 请于「关于」对话框窗体的 Load 事件处理例程中撰写下列程序代码 private void AboutBox_Load(object sender EventArgs e) AssemblyInfoClass myAssembly = new AssemblyInfoClass(); labelProductName Text = 产品名称 + myAssembly Product; labelVersion Text = 版本 + myAssembly Version; labelCopyright Text = 版权宣告 + myAssembly Copyright; labelCompanyName Text = 公司名称 + myAssembly Company; textBoxDescription Text = 细部描述 + myAssembly Description;要显示「关于」对话框 请替「说明」菜单项目的Click事件处理例程中撰写下列程序代码
private void toolStripMenuItem _Click(object sender EventArgs e) // 显示关于对话框 AboutBox MyAboutBox = new AboutBox(); // 设定关于对话框的启始位置 MyAboutBox StartPosition = FormStartPosition CenterScreen; MyAboutBox Show(); 当用户点选不同的选项按钮时 将会执行下列程序代码来显示不同的动画效果 这些程序代码撰写于选项按钮的 CheckedChanged 事件处理函式中 如下所列 private void RadioButtons_CheckedChanged(object sender EventArgs e) if(optWink Checked) tmrAnimation Interval = WINK_TIMER_INTERVAL; else if(optBall Checked) tmrAnimation Interval = BALL_TIMER_INTERVAL; else if(optText Checked) tmrAnimation Interval = TEXT_TIMER_INTERVAL; OnResize(EventArgs Empty); 自订函式 RadioButtons_CheckedChanged 会叫用 OnResize 函式来产生不同的图形 请大家注意 我们系使用 Graphics 类别的 FillEllipse 方法来绘制球形 程序代码如下所列 protected override void OnResize(EventArgs ea) if (optWink Checked) Graphics grfx = CreateGraphics(); // 重绘窗体 this Refresh(); else if (optBall Checked) Graphics grfx = CreateGraphics(); grfx Clear(BackColor); double dblRadius = Math Min(ClientSize Width / grfx DpiX ClientSize Height / grfx DpiY) / intBallSize; intBallRadiusX = (int)(dblRadius * grfx DpiX); intBallRadiusY = (int)(dblRadius * grfx DpiY); intBallMoveX = (int)(Math Max( intBallRadiusX / intMoveSize)); intBallMoveY = (int)(Math Max( intBallRadiusY / intMoveSize)); intBitmapWidthMargin = intBallMoveX; intBitmapHeightMargin = intBallMoveY; intBallBitmapWidth = * (intBallRadiusX + intBitmapWidthMargin); intBallBitmapHeight = * (intBallRadiusY + intBitmapHeightMargin); bitmap = new Bitmap(intBallBitmapWidth intBallBitmapHeight); grfx = Graphics FromImage(bitmap); grfx Clear(BackColor); // 绘制球形 grfx FillEllipse(Brushes Red new Rectangle(intBallMoveX intBallMoveY * intBallRadiusX * intBallRadiusY)); intBallPositionX = (int)(ClientSize Width / ); intBallPositionY = (int)(ClientSize Height / ); else if (optText Checked) Graphics grfx = CreateGraphics(); grfx Clear(BackColor);最后 利用定时器将图形连续重绘于窗体上 便产生了动画效果 程序代码撰写于定时器的 Tick 事件处理例程中 如下所示
private void tmrAnimation_Tick(object sender EventArgs e) // 眨眼效果 if(optWink Checked) Graphics grfx = CreateGraphics(); // 将数组中之图形绘制在画面上 grfx DrawImage(arrImages[intCurrentImage] (int)((ClientSize Width arrImages[intCurrentImage] Width) / ) (int)((ClientSize Height arrImages[intCurrentImage] Height) / ) arrImages[intCurrentImage] Width arrImages[intCurrentImage] Height); intCurrentImage += j; if(intCurrentImage == ) j = ; else if(intCurrentImage == ) j = ; else if(optBall Checked) // 弹跳的球 Graphics grfx = CreateGraphics(); // 将球绘制在画面上 grfx DrawImage(bitmap (int)(intBallPositionX intBallBitmapWidth / ) (int)(intBallPositionY intBallBitmapHeight / ) intBallBitmapWidth intBallBitmapHeight); // 移动球的位置 intBallPositionX += intBallMoveX; intBallPositionY += intBallMoveY; // 球碰到左右边界 if(intBallPositionX + intBallRadiusX >= ClientSize Width || intBallPositionX intBallRadiusX <= ) intBallMoveX = intBallMoveX; SystemSounds Beep Play(); // 球碰到上下边界 if(intBallPositionY + intBallRadiusY >= ClientSize Height || intBallPositionY intBallRadiusY <= ) intBallMoveY = intBallMoveY; SystemSounds Beep Play(); else if (optText Checked) // 闪动文字 Graphics grfx = CreateGraphics(); // 设定文字的字型与大小 Font font = new Font( Microsoft Sans Serif FontStyle Bold GraphicsUnit Point); // 设定要显示的文字 string strText = 章立民研究室 ; SizeF sizfText = new SizeF(grfx MeasureString(strText font)); // X坐标与Y坐标的配对 PointF ptfTextStart = new PointF((float)(ClientSize Width sizfText Width) / (float)(ClientSize Height sizfText Height) / ); PointF ptfGradientStart = new PointF( ); PointF ptfGradientEnd = new PointF(intCurrentGradientShift ); // 设定笔刷 LinearGradientBrush grBrush = new LinearGradientBrush(ptfGradientStart ptfGradientEnd Color Blue BackColor); // 将文字绘制在画面上 grfx DrawString(strText font grBrush ptfTextStart); // 以不同的坐标绘制文字 造成闪动效果 intCurrentGradientShift += intGradiantStep; if (intCurrentGradientShift == ) intGradiantStep = ; else if (intCurrentGradientShift == ) intGradiantStep = ; cha138/Article/program/net/201311/13166相关参考
VisualC#2005中使用正则表达式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 正则表达
利用C#制作简单的留言板 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 留言板分三个模块列出留言
利用C#制作简单的留言板的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  
C#制作以动画的方式显示图像[5] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!matrixMat
C#制作以动画的方式显示图像[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
C#制作以动画的方式显示图像[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
C#制作以动画的方式显示图像[4] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! mat
C#制作以动画的方式显示图像[8] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
C#制作以动画的方式显示图像[6] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! try
C#制作以动画的方式显示图像[9] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb