下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 用C_变换桌面墙纸

用C_变换桌面墙纸.doc

用C_变换桌面墙纸

傅天舒
2018-10-13 0人阅读 举报 0 0 暂无简介

简介:本文档为《用C_变换桌面墙纸doc》,可适用于综合领域

用C变换桌面墙纸Email:xsjlccccnetcnISSN第卷第期年月与技术()ComputerKnowledgeandTechnology电脑知识cn与技术ComputerKnowledgeandTechnology电脑知识Tel:Vol,No,July,pp,用C#变换桌面墙纸陈建丽,四川省卫生学校,四川成都,摘要,该文主要是运用C#语言Bitmap类的Clone和Save方法,以及API函数SystemParametersInf,实现了动态o修改当前桌面墙纸,克服了用户手工改变桌面墙纸文件和桌面墙纸文件只能静态显示的缺点,使呆板文件和动态移动大于桌面的墙纸文件两大功能。的用户桌面显得既生动又美观关键词,C#,,,语言动态桌面墙纸中图分类号,TP文献标识码,A文章编号,()UsingC#TransformtheDesktopWallpaperCHENJianli(Medicalschoolsinsichuanprovince,Chengdu,China)Abstract:ThisarticleismainlyusingC#languageBitmapClassandSavetheClonemethodAPIandfunctiontheSystemParametersInfotoachieveadynamicdesktopwallpapertoamendthecurrentdocumentanddynamicmobilethandesktopfilewallpapertwofunctionsItovercometheusermanualtochangethedesktopwallpaperfileanddesktopwallpaperfileonlyshowstheshortcomingsofstaticsothattheuser'sdesktopappearsdulllivesinalivelyandbeautifulKeywords:C#languagedynamicdesktopwallpaper背景随着信息技术的不断发展,人们可以通过网络等多种方式搜集自己喜欢的图片,并把它作为自己电脑的桌面墙纸。但是在使用,,,,用户会发现以下两个不足之处每次都必须自己手工更改当前的墙纸文件图片的大小不一定都和桌面的大小一致不的过程中、平铺还是拉伸方式都达不到美观的要求。针对上述情况设计了下面这个程序,功能是,一是可以定时改变桌面墙纸管是选择居中,二是可以将大于桌面大小的图片往上、往左或往左上方进行移动。下面列出具体的实现过程和相关信息的解释说明。的图片文件实现过程)启动MicrosoftVisualStudio,选择命令“文件新建项目”,在“新建项目”对话框中选择项目类型为“VisualC#WindowsWindows应用程序”并设置项目名称为DynamicWallPape。r)在默认窗体Form上添加如表所示控件,并设置相应的属性,最后窗体界面如图所示。)在程序中加入以下引用和代码。当然,其中的注释信息在表程序中可以省略。usingSystemusingSystemCollectionsGenericusingSystemComponentMdeolusingSystemDatausingSystemDrawingusingSystemTextusingSystemWindowsFormsusingMicrosoftVisuaBasiclusingSystemRuntimeInteropServicesusingMicrosoftWinnamespacedynamicwallpaper{publicpartialclassForm:Form{DllImport("userdll",CharSet=CharSetAutopub)licstaticexternintSystemParametersInfo(intuAction,intuParam,stringlpvParam,intfuWinIni)该API可用于设置桌面墙纸以下个为SystemParametersInfo设置墙纸时用常量publicconstintSPISETDESKWALLPAPER=publicconstintSPIFUPDATEINIFILE=publicconstintSPIFSENDWININICHANGE=publicintFileWidth图像文件的宽度和高度publicintFileHeightpublicintCurrX显示在屏幕上的图像文件左上角的X坐标和Y坐标图中{stringTempStr用于保存文件名BooleanBeenAdded判断当前文件是否已经加入列表框中TempStr=""FolderBrowserForPictureShowDialog()if(FolderBrowserForPictureSelectedPath!="")选择了文件夹{TempStr=MicrosoftVisualBasicFileSystemDir(FolderBrowserForPictureSelectedPath"**",MicrosoftVisualBasicFileAttributeDirectory)while(TempStr!=)该文件夹有文件{if(((TempStrSubstring(TempStrLastIndexOf(""))ToUpper())=="BMP")||((TempStrSubstring(TempStrLastIndexOf(""))ToUpper())=="GIF")||((TempStrSubstring(TempStrLastIndexOf(""))ToUpper())=="JPG")||((TempStrSubstring(TempStrLastIndexOf(""))ToUpper())=="JPEG")){下面判断该文件是否已经在列表框中BeenAdded=falseif(listBoxPictureFileItemsCount>=)列表框中有文件名{for(intj=j<=listBoxPictureFileItemsCountj){if(listBoxPictureFileItemsjToString()==FolderBrowserForPictureSelectedPath""TempStr){BeenAdded=true已经在列框中break}}}if(!BeenAdded)还没有加入列表框中{listBoxPictureFileItemsAdd(FolderBrowserForPictureSelectedPath""表TempStr)将其加入列表框中}}TempStr=MicrosoftVisualBasicFileSystemDir()继续查找下一个文件}}}privatevoidFormLoad(objectsender,EventArgs程序启动时设置墙纸的显示方式为e)“居中”{RegistryKeyTRegKeyTRegKey=RegistryCurrentUserOpenSubKey("ControlPanelDesktop",true)if(TRegKey!=){TRegKeySetValue("WallpaperStyle","")TRegKeySetValue("TileWallpaper","")}timerChangeCurrentWallPaperInterval=(int)HowLongChangeWallPaperValue**timerChangeCurrentWallPaperEnabled=trueCurrentPictureFileIndex=HaveShown=true}privatevoidtimerChangeCurrentWallPaperTick(objectsender,EventArgs定时改变当前的墙纸文件e){设置列表框中下一个文件为当前的桌面墙纸文件if(listBoxPictureFileItemsCount>HaveShown){if(CurrentPictureFileIndex<listBoxPictureFileItemsCount){CurrentPictureFileIndex=}else{CurrentPictureFileIndex=}HaveShown=falseBitmaptBmp=newBitmap(listBoxPictureFileItemsCurrentPictureFileIndexToString())FileWidth=tBmpWidthFileHeight=tBmpHeightif(tBmpWidth<=ScreenPrimaryScreenBoundsWidthtBmpHeight<=ScreenPrimaryScreenBoundsHeight){图片的宽度和高度都小于桌面时,则直接显示SetWallPaper(listBoxPictureFileItemsCurrentPictureFileIndexToStrin,,tBmpWidth,g(),tBmpHeight)HaveShown=true}否,启动定时器并进行动态显示else{CurrX=从图片的左上角开始CurrY=timerMoveWallPaperEnabled=true}tBmpDispose则()}}privatevoidtimerMoveWallPaperTick(objectsender,e)EventArgs定时移动当前的墙纸文件{BooleanCanMoveLeft图片是否可左移BooleanCanmoveUp是否可以上移if(FileWidthCurrX>=ScreenPrimaryScreenBoundsWidth){可以左移图片Can以MoveLeft=trueCurrX=MathMin(,FileWidthCurrX)每次横向向左最多移动像素}else{CanMoveLeft=false}if(FileHeightCurrY>=ScreenPrimaryScreenBoundsHeight可以上移图){片CanmoveUp=trueCurrY=MathMin(,FileHeightCurrY)每次纵向向上最多移动像素}else{CanmoveUp=false}if(CanMoveLeft==falseCanmoveUp==false)图片已不能上移和左移{timerMoveWallPaperEnabled=false停止定时器HaveShown=true}intDisplayPicWidth屏幕上显示的图片区域的宽度和高度intDisplayPicHeightif(CurrXScreenPrimaryScreenBoundsWidth<=FileWidth){DisplayPicWidth=ScreenPrimaryScreenBoundsWidth}else{DisplayPicWidth=FileWidthCurrX}if(CurrYScreenPrimaryScreenBoundsHeight<=FileHeight){DisplayPicHeight=ScreenPrimaryScreenBoundsHeight}else{DisplayPicHeight=FileHeightCurrY}SetWallPaper(listBoxPictureFileItemsCurrentPictureFileIndexToString(),CurrX,CurrY,DisplayPicWidth,DisplayPicHeight)调用设置墙纸过程}privatevoidSetWallPaper(stringSelectedPicFile,intCurrX,intCurrY,intPicWidth,intPicHeight){将图片文件的指定区域保存为BMP文件,并设置为墙纸文件BitmaptBmp=newBitmap(SelectedPicFile)根据选择的图像文件建立一个Bitmap对象SystemDrawingImagingPixelFormatformat=tBmpPixelFormatRectanglecloneRect=newRectangle(CurrX,CurrY,PicWidth,PicHeight)BitmapcloneBitmap=tBmpClone(cloneRect,format)根据源图片文件和指定区域,建立bitmap对象cloneBitmapSave("C:Tempbmp",SystemDrawingImagingImageFormatBmp)将bitmap对象保存为BMP文件SystemParametersInfo(SPISETDESKWALLPAPER,,"C:Tempbmp",SPIFUPDATEINIFILESPIFSENDWININICHANGE)|设置为墙纸tBmpDispose()}privatevoidbtnApplyClick(objectsender,EventArgs应e)用当前的设置{timerChangeCurrentWallPaperInterval=(int)HowLongChangeWallPaperValue**timerChangeCurrentWallPaperEnabled=true}}})运行程序,选择一个文件夹,该文件夹中所有图片文件将加入列表框中。然后,每隔一段时间,程序会自动改变当前的墙纸文,下转第页,第卷第期(年)月ComputerKnowledgeandTechnology电脑知识与技术EndSubPrivateSubCommandClick()'发送按钮响应的单击事件udpWinsockSendDataSendTextText'发送数据SendTextText=""SendTextSetFocusEndSubPrivateSubudpWinsockDataArrival(ByValbytesTotalAsLong)'有数据到达时触发该事件接收对方数据'DimdatastrAsString'定义一个字符串变量udpWinsockGetDatadatastr'接收数据,保存到datastr字符串变量中Ifdatastr=""ThenreceiveTextText=datastrElsereceiveTextText=receiveTextTextvbCrLfdatastr'将接收数据显示在文本框中EndIfEndSub发送消息甲方的RemoteHost要设置为乙方主机的主机名或者IP,RemoteHost地址而乙方主机的要设置为甲方主机的主机名或者IP地址。发送消息甲方的RemotePort要与乙方的localport一致,而乙方的RemotePort要与甲方的localport相一致。只有这样,双方才可以正常通信。按照以上的叙述,再编写第二个工程,工程的界面如图一所示。编写乙方连接按钮事件代码如下,PrivateSubCommandClick()'连接按钮响应的单击事件OnErrorGoToerrorhandler'启动错误处理例程IfaddresstextText<>""ThenWithudpWinsockRemoteHost=addresstextText对方的主机地址或者名称'RemotePort='连接的端口号Bind'绑定到本地的端口号EndWithElseMsgBox"请输入对方主机名或者IP地址",,"提示信息"EndIfExitSuberrorhandler:MsgBox"对方主机没有连接,请稍后再试!"EndSub乙方发送按钮的单击事件CommandClick(、Winsock)控件对象的数据到达触发事件udpWinsockDataArrival(ByValbytesTotalAsLong)代码可以参考甲方两个事件代码。调试并在两台联网的计算机上分别运行两程序,就可以实现局域网中的两台计算机之间的消息传输了。UDP应用程序创建、调,可以利用菜单设计将该功能模块添加到课件当中。这样学生在利用课件学习的时候,就可以从菜单当中运行该功能,试通过之后在窗体文本框中输入对方的主机名或者IP地址,在联网并且双方都运行该功能的情况下,就可以实现发送、接收交流信息了。参考文献,汪晓平,钟军VisualBasic网络高级编程M北京:人民邮电出版社,:高峰霞,廖彬山VisualBasic中文版提高与应用M北京:电子工业出版社,:,上接第页,件,如果墙纸图片文件宽度和高度都大于桌面,则可以往左上角移动,如果只是宽度大于桌面,或高度大于桌面,则只能左移或上,如果图片宽度和高度都小于等于桌面,则静止显示在桌面上。移上述程序用语言实现,在环境下编译通过。C#WindowsXP参考文献,HejlsbergA,WitamuthS,Golde编程语言详Pc#解M韩江,王秀慧,译北京:电子工业出版社,杜运庆用VB更换桌面墙纸DIYEBOLMSDNLibraryforVisualStudioDBMicrosoftCorp,冉林仓用VisualC#调用WindowsAPI函数EBOL

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/10

用C_变换桌面墙纸

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利