• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

把桌面反过来

发布: 2007-6-21 21:57 | 作者:   | 来源:   | 查看: 21次 | 进入软件测试论坛讨论

领测软件测试网

   
  开机,Start Window...桌面出现了,天天看着这个单调的桌面会不会觉得无聊。换个桌布,还是没劲。对了,把桌面倒过来瞧瞧?怎么才能倒过来呢?用VB5提供的PaintPicture函数就可以。

  PaintPicture函数的功能能把指定Picturebox控件上的图片复制到窗体上。


  paintpicture函数格式如下:

  object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode

  object 目的对象,如果省略object,则带有焦点的 Form 对象缺省为 object

  picture 要绘制到 object 上的图形源,Form 或 PictureBox 必须是 Picture 属性。

  x1,y1 在指定 object 上绘制 picture 的目标坐标(x-轴和y-轴)

  width1,height1 表示目标宽度和高度

  x2,y2 指示 picture 内剪贴区的坐标

  width2,heigh2 指示 picture 内剪贴区的源高度和源宽度

  opcode 它用来定义在将 picture 绘制到 object 上时对 picture 执行的位操作 ,可省略。

  假如我们要复制的图片的长、宽分别为width和height时,将x1设为width,y1为0,width1为-width,height1等于height,其他不变,则复制后图片将左右对调。同理我们可以将图片上下对调或者上下左右都对调。

  但是要让屏幕翻起来,我们还要解决一个问题。因为PaintPicture函数只能对bmp图进行操作,所以它不能直接对屏幕进行操作。那只好先将屏幕抓下来存成bmp图,再对bmp图进行操作。以下就是源程序,需要一个Picturebox 控件,将AutoRedraw属性设为true,form的borderstyle属性设为none

  Option Explicit
  Private Declare Function GetDC Lib “user32" (ByVal hwnd As Long) As Long
  Private Declare Function BitBlt Lib “gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcdc As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
  Private Declare Function DeleteDC Lib “gdi32" (ByVal hdc As Long) As Long
  Dim scrndc As Long
  Const SRCCOPY = &HCC0020
  Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

  将窗体覆盖在屏幕上

  Me.Left = 0
  Me.Top = 0
  Me.Height = Screen.Height
  Me.Width = Screen.Width
  Select Case KeyCode
   Case vbKeyLeft 按左方向键屏幕左右对调

   PaintPicture Picture1, Picture1.Width, 0, -Picture1.Width, Picture1.Height, 0, 0, Picture1.Width, Picture1.Height, SRCCOPY

   Case vbKeyRight 按右方向键屏幕上下对调

   PaintPicture Picture1, 0, Picture1.Height, Picture1.Width, -Picture1.Height, 0, 0, Picture1.Width, Picture1.Height, SRCCOPY

   Case vbKeyUp 按上方向键屏幕复原

   PaintPicture Picture1, 0, 0, Picture1.Width, Picture1.Height, 0, 0, Picture1.Width, Picture1.Height, SRCCOPY

   Case vbKeyDown 按下方向键屏幕上下,左右都对调

   PaintPicture Picture1, Picture1.Width, Picture1.Height, -Picture1.Width, -Picture1.Height, 0, 0, Picture1.Width, Picture1.Height, SRCCOPY
   Case vbKeyEscape 按ESC键退出
   Unload Me

   Case Else 按其他键显示出错信息

   MsgBox “无效键", vbOKOnly
   End Select
  End Sub
  Private Sub Form_Load()
  Dim throw As Long

  最小化窗体

  Me.Top = 40
  Me.Width = 40

  得到屏幕图像

  scrndc = GetDC(0)
  Picture1.Width = Screen.Width
  Picture1.Height = Screen.Height
  throw = BitBlt(Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, scrndc, 0, 0, SRCCOPY)
  SavePicture Picture1.Image, “c: emp.bmp"
  Set Picture1.Picture = LoadPicture(“c: emp.bmp")
  End Sub
  Private Sub Form_Unload(Cancel As Integer)
  DeleteDC scrndc
  Kill “c: emp.bmp"
  End Sub

  运行程序用方向键就能控制屏幕翻转,ESC键退出。

  以上程序在我的机子上运行有一点停顿,各位看官的机子一定不比我的差,运行起来自然流畅。其实如果要提高运行速度可以全部用API来做,这样的话就会复杂一点,但还可以实现许多特殊效果,有机会我们下回分解。

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网