c 井 开发技巧毕业设计(论文)word格式.doc

上传人:文库蛋蛋多 文档编号:4018683 上传时间:2023-04-01 格式:DOC 页数:266 大小:1.87MB
返回 下载 相关 举报
c 井 开发技巧毕业设计(论文)word格式.doc_第1页
第1页 / 共266页
c 井 开发技巧毕业设计(论文)word格式.doc_第2页
第2页 / 共266页
c 井 开发技巧毕业设计(论文)word格式.doc_第3页
第3页 / 共266页
c 井 开发技巧毕业设计(论文)word格式.doc_第4页
第4页 / 共266页
c 井 开发技巧毕业设计(论文)word格式.doc_第5页
第5页 / 共266页
点击查看更多>>
资源描述

《c 井 开发技巧毕业设计(论文)word格式.doc》由会员分享,可在线阅读,更多相关《c 井 开发技巧毕业设计(论文)word格式.doc(266页珍藏版)》请在三一办公上搜索。

1、C#.net常用函数和方法集1用C#.net轻松制作不规则窗体4VisualC#制作可伸缩个性化窗体8如何用C#实现漂亮的动态图像按钮16C#中将Big5繁体转换简体GB2312的代码20利用VS.NET创建C#Windows服务21c#线程23创建和使用C#DLL24在C中调用C/C+代码27C#调用C语言DLL文件示范28在C#中调用windowsAPI函数实例31使用C#跨平台调用p/invokeDllImport32C#调用C动态库37C#操作数据库简介38NET(C#)连接各类数据库40C#页面传值44C#存储过程从入门到熟练51中定义和调用存储过程入门54c#皮肤制作相关问题58C

2、#中XML的基本应用59C#来创建和读取XML文档62C#操作xml文件入门70C#读写INI文件74利用C#2005远程存取Access数据库80c#读写excel84C#学习笔记(七):接口的执行85C#学习笔记(十三):读写Txt文件90C#学习笔记(十六):使用打开保存文件对话框92C#学习笔记(二十三):串行化和并行化96GridView随意点击一处全选整行方法98插件技术原理及其C#实现99C#断点续传原理与实现102图片保存到数据库和从数据库读取图片并显示(C)105c#在线升级106c#.net在WEB页中设置COOKIES114DotNET(C#)Socket基本编程115S

3、ocket类实例:利用多现程解决服务器通信问题127.NET中三层构架开发实例-用户注册系统131用C#实现基于TCP协议的网络通讯135介绍C#中实现接口的几种方法139支付宝Payto接口的c#.net实现144用C#绘制实时曲线图147用VisualC#实现P2P应用程序154用C#实现C/S模式下软件自动在线升级162实现窗体间传值168多线程 进度条 C# .net185C#中timer类的用法192c# MD5加密算法的一个实例195C#文件和文件夹操作196C#图像处理之-给你的图片打上LOGO199C# 程序开发范例宝典(十七)图形技术四图像文字209C#图像处理(一)打开图片

4、210C#图像处理(二)黑白效果211C#图像处理(三)反色处理213C#图像处理(四)滤色效果214C#图像处理(五)图片翻转215C#图像处理(七)调节图片光暗217C#图像处理(六)添加文字218C#图像处理(八)转换图片格式219c#拉伸图片220基于UDP、TCP协议的C#网络编程之一221基于UDP、TCP协议的C#网络编程之二224C#中事件与线程的应用229winform登录后跳转(主窗体转移到新窗口)232C#线程同步的生产者消费者问题232C#窗体间通讯的几种处理方法A241C#窗体间通讯的几种处理方法B246基于TCP协议实现P2P(PeerToPeer)思想A247基于

5、TCP协议实现P2PB250基于TCP协议实现P2PC252C#文件操作255C# Socket与实现258C#.net常用函数和方法集1、DateTime数字型System.DateTimecurrentTime=newSystem.DateTime();1.1取当前年月日时分秒currentTime=System.DateTime.Now;1.2取当前年int年=currentTime.Year;1.3取当前月int月=currentTime.Month;1.4取当前日int日=currentTime.Day;1.5取当前时int时=currentTime.Hour;1.6取当前分int分

6、=currentTime.Minute;1.7取当前秒int秒=currentTime.Second;1.8取当前毫秒int毫秒=currentTime.Millisecond;(变量可用中文)2、Int32.Parse(变量)Int32.Parse(常量)字符型转换转为32位数字型3、变量.ToString()字符型转换转为字符串12345.ToString(n);/生成12,345.0012345.ToString(C);/生成¥12,345.0012345.ToString(e);/生成1.234500e+00412345.ToString(f4);/生成12345.000012345.

7、ToString(x);/生成3039(16进制)12345.ToString(p);/生成1,234,500.00%4、变量.Length数字型取字串长度:如:stringstr=中国;intLen=str.Length;/Len是自定义变量,str是求测的字串的变量名5、System.Text.Encoding.Default.GetBytes(变量)字码转换转为比特码如:bytebytStr=System.Text.Encoding.Default.GetBytes(str);然后可得到比特长度:len=bytStr.Length;6、System.Text.StringBuilder(

8、)字符串相加,(+号是不是也一样?)如:System.Text.StringBuildersb=newSystem.Text.StringBuilder();sb.Append(中华);sb.Append(人民);sb.Append(共和国);7、变量.Substring(参数1,参数2);截取字串的一部分,参数1为左起始位数,参数2为截取几位。如:strings1=str.Substring(0,2);8、Stringuser_IP=Request.ServerVariablesREMOTE_ADDR.ToString();取远程用户IP地址9、穿过代理服务器取远程用户真实IP地址:if(R

9、equest.ServerVariablesHTTP_VIA!=null)stringuser_IP=Request.ServerVariablesHTTP_X_FORWARDED_FOR.ToString();elsestringuser_IP=Request.ServerVariablesREMOTE_ADDR.ToString();10、Session变量;存取Session值;如,赋值:Sessionusername=小布什;取值:ObjectobjName=Sessionusername;StringstrName=objName.ToString();清空:Session.Remo

10、veAll();11、Stringstr=Request.QueryString变量;用超链接传送变量。在Edit.aspx页中取值:Stringstr=Request.QueryStringfdid;12、DOC对象.CreateElement(新建节点名);创建XML文档新节点13、父节点.AppendChild(子节点);将新建的子节点加到XML文档父节点下14、父节点.RemoveChild(节点);删除节点15、ResponseResponse.Write(字串);Response.Write(变量);向页面输出。Response.Redirect(URL地址);跳转到URL指定的页

11、面16、char.IsWhiteSpce(字串变量,位数)逻辑型查指定位置是否空字符;如:stringstr=中国人民;Response.Write(char.IsWhiteSpace(str,2);/结果为:True,第一个字符是0位,2是第三个字符。17、char.IsPunctuation(字符)-逻辑型查字符是否是标点符号如:Response.Write(char.IsPunctuation(A);/返回:False18、(int)字符把字符转为数字,查代码点,注意是单引号。如:Response.Write(int)中);/结果为中字的代码:2001319、(char)代码把数字转为字

12、符,查代码代表的字符。如:Response.Write(char)22269);/返回“国”字。20、Trim()清除字串前后空格21、字串变量.Replace(子字串,替换为)字串替换如:string str=中国;str=str.Replace(国,央);/将国字换为央字Response.Write(str);/输出结果为“中央”再如:(这个非常实用)stringstr=这是脚本;str=str.Replace(,);/将左尖括号替换为与与(或换为,但估计经XML存诸后,再提出仍会还原)Response.Write(str);/显示为:“这是脚本”如果不替换,将不显示,如果是一段脚本,将运

13、行;而替换后,脚本将不运行。这段代码的价值在于:你可以让一个文本中的所有HTML标签失效,全部显示出来,保护你的具有交互性的站点。具体实现:将你的表单提交按钮脚本加上下面代码:stringstrSubmit=label1.Text;/label1是你让用户提交数据的控件ID。strSubmit=strSubmit.Replace(,);然后保存或输出strSubmit。用此方法还可以简单实现UBB代码。22、Math.Max(i,j)取i与j中的最大值如intx=Math.Max(5,10);/x将取值1023、字串对比一般都用:if(str1=str2),但还有别的方法:(1)、string

14、 str1;str2/语法:str1.EndsWith(str2);_检测字串str1是否以字串str2结尾,返回布尔值.如:if(str1.EndsWith(str2)Response.Write(字串str1是以+str2+结束的);(2)、/语法:str1.Equals(str2);_检测字串str1是否与字串str2相等,返回布尔值,用法同上.(3)、/语法Equals(str1,str2);_检测字串str1是否与字串str2相等,返回布尔值,用法同上.24、IndexOf()、LastIndexOf()查找字串中指定字符或字串首次(最后一次)出现的位置,返回索引值,如:str1.I

15、ndexOf(字);/查找“字”在str1中的索引值(位置)str1.IndexOf(字串);/查找“字串”的第一个字符在str1中的索引值(位置)str1.IndexOf(字串,3,2);/从str1第4个字符起,查找2个字符,查找“字串”的第一个字符在str1中的索引值(位置)25、Insert()在字串中指定索引位插入指定字符。如:str1.Insert(1,字);在str1的第二个字符处插入“字”,如果str1=中国,插入后为“中字国”;26、PadLeft()、PadRight()在字串左(或右)加空格或指定char字符,使字串达到指定长度,如:stringstr1=中国人;str1

16、=str1.PadLeft(10,1);/无第二参数为加空格Response.Write(str1);/结果为“1111111中国人”,字串长为1027、Remove()从指定位置开始删除指定数的字符stringstr1=我是萨达姆的崇拜者之一;Response.Write(str1.Remove(5,4);/结果为“我是萨达姆之一”用C#.net轻松制作不规则窗体现在我们可以使用C#.net轻松的创建不规则窗体,下面我就用一个简单的例子来讲述其制作过程。1.绘制不规则窗体位图2.设置窗体基本属性3.编写窗体相关代码(要实现窗口的关闭,移动等操作)1.绘制不规则窗体位图可以使用任意一种你喜欢的

17、作图工具,制作一个有形状的位图,背景使用一种其他的颜色。这个颜色在编程中用得着,所以最好使用一种容易记忆的颜色。如图下图,本例中使用的背景色为黄色(#ffff00/yellow),文件名为bk.bmp2.创建windows窗体并设置窗体基本属性1新建windows应用程序2选中新建的窗体,设置其相应属性:(1)。将FormBorderStyle属性设置为None。(2)。将窗体的BackgroundImage属性设置为先前创建的位图文件。不必将文件添加到项目系统中;这将在指定该文件作为背景图像时自动完成。(3)。将TransparencyKey属性设置为位图文件的背景色,本例中为黄色。(此属性

18、告诉应用程序窗体中的哪些部分需要设置为透明。)这时你就可以按F5测试你的程序,可以看到如图所示的窗体。现在窗体还不能拖动,只能通过结束程序,或者alt+F4关闭。下面我们编写相应的代码来实现标题栏的相应功能。3.编写窗体相关代码(要实现窗口的关闭,移动等操作)(1)。实现窗口关闭从工具栏中拖进一个按钮,设置其按钮文字为“”,设置其大小为合适大小。双击该按钮进入其触发时间函数。写入如下代码:this.Close();/关闭本窗体(2)。设置窗体的移动操作,我们要用到两个全局的变量Private Point mouseOffset;/记录鼠标指针的坐标Private bool isMouseDow

19、n=false;/记录鼠标按键是否按下创建该窗体MouseDown事件的相应处理程序。privatevoidForm1_MouseDown(objectsender,System.Windows.Forms.MouseEventArgse)intxOffset;intyOffset;if(e.Button=MouseButtons.Left)xOffset=-e.X-SystemInformation.FrameBorderSize.Width;yOffset=-e.Y-SystemInformation.CaptionHeight-SystemInformation.FrameBorderS

20、ize.Height;mouseOffset=newPoint(xOffset,yOffset);isMouseDown=true;创建该窗体的MouseMove事件的相应处理程序privatevoidForm1_MouseMove(objectsender,System.Windows.Forms.MouseEventArgse)if(isMouseDown)PointmousePos=Control.MousePosition;mousePos.Offset(mouseOffset.X,mouseOffset.Y);Location=mousePos;创建该窗体的MouseUp事件的相应处

21、理程序privatevoidForm1_MouseUp(objectsender,System.Windows.Forms.MouseEventArgse)/修改鼠标状态isMouseDown的值/确保只有鼠标左键按下并移动时,才移动窗体if(e.Button=MouseButtons.Left)isMouseDown=false;(3)。加入相应的其他的控件其他的就是看你自己的需要,来添加控件,实现自己想要实现的功能。本例中添加了一文本框,设置其背景为黄色,所以显示时也成了透明的。现在,我们就可以生成程序,看一下最后的效果了。注意:如果监视器的颜色深度设置大于24位,则不管Transpare

22、ncyKey属性是如何设置的,窗体的非透明部分都会产生显示问题。若要避免出现这种问题,请确保“显示”控制面板中的监视器颜色深度的设置小于24位。当开发具有这种透明功能的应用程序时,请牢记应使您的用户意识到此问题。VisualC#制作可伸缩个性化窗体谁都希望自己的应用程序能让人留下一个深刻的印象,让自己的程序窗体有一件与众不同的外衣是一个好办法。试想:在一大堆的普通窗口中突然跳出一个很酷的界面,一定能让人眼睛一亮进而产生兴趣的。在VB,VC中如何定制可伸缩个性化窗口早就不是什么秘密了,已经有了大量相关的文章进行介绍,无非都是如何调用系统API之类的方法,但是在.Net中调用API却相对比较麻烦,

23、所以使用.Net制作个性化窗体的文章也有一些,一般都是使用透明背景加图片的方式,所以不能移动/任意放大缩小窗体。那有没有不需要调用系统API的方法来实现可伸缩的个性化窗体的办法呢?当然有,.NetFramework提供了一套非常强大的系统类库,我们下面就要做一个使用纯.Net打造的可伸缩个性化窗体。我们需要将窗体所有的皮肤全部换成我们自己定义的,包括标题栏,边框和系统按纽等,所以我们首先需要定做一套自己的皮肤图形文件。因为窗体是可伸缩的,所以我们不能简单的取一整幅图片来作为窗体皮肤,而是根据需要先将图片切割为不同的部分,一般来说,有以下图示几大部分(红线为切割线):根据方位,将图片各部分命名为

24、:Bottom_Left,Bottom_Middle,Bottom_Right,Middle_Left,Middle_Right,Top_Left,Top_Middle,Top_Right,SysButton_Min,SysButton_Max,SysButton_Close,SysButton_Restore等。注意,有些图片是可以伸缩的地方,比如Middle_Left,Bottom_Middle等处的图片可以只是一小块,以后需要进行重复贴图。而有些固定大小的图片,比如Bottom_Left,Top_Left等以后只用贴一次,实际应用的时候要注意区分。采用以上原则,你便可以制作皮肤图片,图示

25、如下:然后可以将这些图片放到ImageList控件或资源文件中供程序调用。接下来,我们使用VisualStudio.Net新建一个Windows应用程序的项目,在窗体的属性设置中,将窗体的FormBorderStyle属性设置为None(无边框样式),如下图所示:定义一个资源管理器:privateResourceManagerrm;然后使用以下的方法在Form的构造函数中将图片取出来(资源文件名为Skin.resources):rm=newResourceManager(SkinWindow.Skin,Assembly.GetExecutingAssembly();Bottom_Left=(B

26、itmap)rm.GetObject(Bottom_Left);(其它的图片也按照此方法取)重载Form的OnPaint事件:Graphicsg=e.Graphics;/手工画窗体的各个部?DrawMiddle_Left(e.Graphics);/画左边框DrawBottom_Middle(e.Graphics);/画下边框DrawMiddle_Right(e.Graphics);/画右边框DrawBottom_Left(e.Graphics);/画左下角DrawBottom_Right(e.Graphics);/画右下角DrawTop_Left(e.Graphics);/画标题栏左边Draw

27、Top_Right(e.Graphics);/画标题栏右边DrawTop_Middle(e.Graphics);/画标题栏中间DrawSys_Button(e.Graphics);/画系统按纽以下是上述画皮肤方法的具体实现部分,我只举一个画左边框的代码示例,其它的部分请读者举一返三:privatevoidDrawMiddle_Left(Graphicsg)Brushbrush=newTextureBrush(Middle_Left,newRectangle(0,0,Middle_Left.Width,Middle_Left.Height);g.FillRectangle(brush,0,TIT

28、LE_WIDTH,Middle_Left.Width,Height-Bottom_Middle.Height-TITLE_WIDTH);衣服穿上了,现在我们的程序就有了不同的外观:看上去已经很酷了,不过只是花架子,因为边框,标题栏,系统按纽都是我们自己画上去的假的边框,标题栏和系统按纽,所以这个窗体既不能移动也不能自由的放大缩小,点关闭都没用。以前我们写程序从来都不需要关心这个的,这些都是窗体的基本功能呀?没有从来都没有想到这个竟然还会是个问题吧?怎么办呢?答案就是我们自己来做,不过会比较麻烦,因为取消掉了边框,所以Windows不会帮你发出系统事件,你捕捉不到系统发生了什么事情的话,就没有办

29、法写下响应代码,所以我们要自己检测鼠标的坐标,并根据鼠标的动作,自己来发出事件消息,然后进行响应。首先我们先定义出一些响应事件的代码,我定义了一个抽象的基类MouseAction,用来表示所有的鼠标事件,它有一个抽象方法Action:publicabstractclassMouseActionpublicabstractvoidAction(intScreenX,intScreenY,System.Windows.Forms.Formform);然后再来定义出它的各个派生类来表示出具体每个鼠标事件响应的代码。下面是一个向右拉伸窗口事件的代码响应:publicclassMouseSizeRigh

30、t:MouseActionprivateintlx;publicMouseSizeRight(intLocationX)lx=LocationX;publicoverridevoidAction(intScreenX,intScreenY,System.Windows.Forms.Formform)form.Width=ScreenX-lx;form.Invalidate();非常简单和容易理解,我就不再赘述,其它的各个事件也都一样简单,这里也不给出所有事件的实现代码,只是列举一下还需要实现的代码响应类:MouseSizeLeft:拉伸左边框MouseSizeBottom:拉伸下边框Mouse

31、SizeTop:拉伸上边框MouseSizeTopLeft:拉伸左上角MouseSizeTopRight:拉伸右上角MouseSizeBottomLeft:拉伸左下角MouseSizeBottomRight:拉伸右下角MouseDrag:鼠标拖动鼠标拖动同样也很简单,不过却稍不同于窗口的缩放拉伸,这里举出它的实现代码:publicclassMouseDrag:MouseActionprivateintx,y;publicMouseDrag(inthitX,inthitY)x=hitX;y=hitY;publicoverridevoidAction(intScreenX,intScreenY,S

32、ystem.Windows.Forms.Formform)form.Location=newPoint(ScreenX-x,ScreenY-y);接下来我们开始编写发出事件的代码,先定义几个变量:privateintLEFT=5,RIGHT=5,BOTTOM=5,TOP=5,TITLE_WIDTH=45;/边框和标题栏的大小privateintx=0,y=0;/保存鼠标的临时坐标privateMouseActionmouse;/鼠标的事件响应对象然后在Form的MouseDown事件中记录下鼠标的当前坐标:x=e.X;y=e.Y;附:e为System.Windows.Forms.MouseEv

33、entArgs然后再根据鼠标的坐标定义出事件响应对象:/鼠标点击左上边框if(e.X=LEFT+10&e.Y=TOP)|(e.Y=TOP+10&e.XWidth-20&e.Y6&e.XWidth-20+SysButton_Min.Width&e.Y6+SysButton_Min.Height)Close();return;大部分的事件响应实际上是在MouseMove事件中完成的:privatevoidForm_MouseMove(objectsender,System.Windows.Forms.MouseEventArgse)this.Parent.Cursor=CheckCursorTyp

34、e(e.X,e.Y);/改变鼠标的指针形状if(mouse!=null)mouse.Action(Control.MousePosition.X,Control.MousePosition.Y,this);/执行时间响应/注意坐标是Control.MousePosition这个静态变量给出的,它的值为鼠标在桌面上的全局坐标给出每个不同部位的鼠标的指针形状:privateCursorCheckCursorType(intX,intY)if(X=LEFT+10&Y=TOP)|(Y=TOP+10&X=Width-RIGHT-10&Y=Height-BOTTOM)|(Y=Height-BOTTOM-1

35、0&X=Width-RIGHT)returnCursors.SizeNWSE;elseif(Y=Width-RIGHT)|(Y=Width-RIGHT-10)|(X=Height-BOTTOM-10)|(Y=Height-BOTTOM&X=Width-RIGHT|X=Height-BOTTOM|YTOP&yTITLE_WIDTH)if(WindowState=FormWindowState.Normal)WindowState=FormWindowState.Maximized;SysButton=SysButton_Restore;Invalidate();elseif(WindowStat

36、e=FormWindowState.Maximized)WindowState=FormWindowState.Normal;SysButton=SysButton_Max;Invalidate();防止窗体被缩小成一个点,最好给窗口的MinimumSize赋上一个适当的值,例如200,200。如何用C#实现漂亮的动态图像按钮前一阵子参与一个项目开发,好友总是抱怨工具栏按钮太简陋了:要是弄得炫一点该多好啊,看看人家Mac的桌面工具栏!事实也的确如此,现在越来越多的程序界面做的是相当的酷啊,无论是什么平台Mac、Windows还是Linux,其界面元素越来越丰富,一个小小的button背景都要在

37、鼠标的不同事件激活下渐变来渐变去。但是,遍历VSIDE中默认的工具集合我们是无论如何也找不到如此复杂的控件的,所以,我们必须借助强大的.Net框架以及GDI+自己动手来制作类似的工具栏按钮控件。我们要创建的控件简单说就是一个动态渐变的图片按钮,示例程序界面如下:这个button控件依旧继承自UserControl,UserControl是制作自定义UI控件绝对的父类,这里不再细说。我们为这个button取名为DynamicImageButton。制作图像按钮当然离不开绘制,所以还得用到GDI+,我曾经写过多篇关于界面元素的文章,比如”利用.Net绘图技术制作水晶按钮控件”、”利用C#实现任务栏

38、通知窗口”、”利用C#为数码照片添加拍照日期”、”C#实现运行时拖动控件并调整控件大小”等等,其中都会涉及到GDI+的诸多方面,可见GDI+在设计制作UI上是多么的重要啊!对于按钮图片透明度渐变的操作则比较有技巧,采取了个人认为比较另类却极其高效的方法。制作图片按钮肯定是要为这个button赋值一个图像文件的,我们需要公开一个属性,代码如下:publicBitmapImagegetreturnbmp0;setbmp0=value;bmp1=returnAlpha(value,60);bmp2=returnAlpha(value,120);bmp3=returnAlpha(value,180);

39、draw();大家注意到,当给这个DynamicImageButton的image属性赋值一幅图片后,立即就会对这个原始图片经过4种不同的alpha过滤后分别存放到bmp位图数组下。bmp0保存原始图像,bmp3的图像则最透明。这就是本程序的特点所在,也就是在运行时是不进行图像透明度渐变计算的,在给image属性赋值时计算工作同时也已经完成了,这样可以省下鼠标移动事件的巨大计算量。returnAlpha方法就是将原始图像中的每一个像素按照相应的alpha值进行重新绘制后保存在bmp数组中,不同透明度的图像作为bmp数组的不同元素进行保存。代码如下:publicstaticBitmapretur

40、nAlpha(Bitmapbmp,intalpha)Colorcol;Bitmapbmp2=newBitmap(bmp);for(inti=0;ibmp.Width;i+)for(intj=0;j0)bmp2.SetPixel(i,j,Color.FromArgb(min(col.A-alpha),col.R,col.G,col.B);returnbmp2;到这里大家可能就已经明白我的用意了,没错!从原始图像到最终图像的透明渐变我只设计了4帧!其实,这对于一个小小的button动画来说已经完全足够了。对于图像的绘制方法我们仍旧采用双缓冲区绘制,也就是内存复制,实际上就是双bitmap对象交替使

41、用,这样可以更好的防止图像闪烁(参见我的另一篇文章”.NET框架下使用双缓冲技术绘图”)。相关代码如下:privatevoidDynamicImageButton_Paint(objectsender,System.EventArgse)g2=Graphics.FromImage(dblbuffer);g2.Clear(this.BackColor);curx=(int)(double)Width)/6;cury=(int)(double)Height)/6;curwidth=(int)(double)Width)/3*2;curheight=(int)(double)Height)/3*2;

42、itvwidth=(Width-curwidth)/2;g2.DrawImage(bmp3,curx,cury,curwidth,curheight);g.DrawImageUnscaled(dblbuffer,0,0);然后就是对图像大小渐变的控制了,如下图所示:a、b、c和d四个矩形代表不同大小的4个帧,a帧是装载图像时的默认大小,就是bmp0的图像,也是4帧中最大的一帧,width=75和height=72是我们示例程序控件的大小,网友可以随意对长宽进行重新设定。这两个数值是基础,bmp0的图像会完全填充到这个区域内,在这个给定的长和宽的基础上我们计算出b、c和d三帧的图像大小和位置。然后创建一个计数器,当鼠标Enter或者Leave我们创建的这个DynamicImageButton时对图像的透明度和大小的渐变进行控制。相关代码如下:privatevoidtimer1_Tick(objectsender,EventArgse)if(mp=enumMousePosition.Enter)if(curx=0)|(cury=0)|(Widt

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号