您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VB >> 辅导 >> 正文    
  用VB6轻松实现图片旋转 【注册男护士专用博客】          

用VB6轻松实现图片旋转

www.nanhushi.com     佚名   不详 

  使用过ACDSEE的朋友一定对它的JPG图片旋转功能记忆犹新,其实我们利用VB6的先进功能,可以对任意格式的图片文件(包括JPG、GIF、BMP、ICO等)进行45度、180度旋转,确实可以和ACDSEE一较高下。

  启动vb6建立一个标准exe工程,首先添加两个图片框(picture1和picture2),添加三个命令按钮command1(caption=“正常显示”)、command2(caption=“180度倒立”)、command3(caption=“45度旋转”),双击窗体,写入以下代码:

  PrivateConstSRCCOPY=&HCC0020

  PrivateConstPi=3.14

  PrivateDeclareFunctionSetPixelLib"gdi32"(ByValhdcAsLong, ByValxAsLong,ByValyAsLong,ByValcrColorAsLong)AsLong

  PrivateDeclareFunctionGetPixelLib"gdi32"(ByValhdcAsLong, ByValxAsLong,ByValyAsLong)AsLong

  PrivateDeclareFunctionStretchBltLib"gdi32"(ByValhdcAsLong,  ByValxAsLong,ByValyAsLong,ByValnWidthAsLong,ByValnHeightAsLong,   
ByValhSrcDCAsLong,ByValxSrcAsLong,ByValySrcAsLong,ByValnSrcWidth AsLong,ByValnSrcHeightAsLong,ByValdwRopAsLong)  AsLong

  privateSubbmp_rotate(pic1AsPictureBox,pic2AsPictureBox,ByValtheta)‘45度旋转 

  Dimc1xAsInteger,c1yAsInteger

  Dimc2xAsInteger,c2yAsInteger

  DimaAsSingle

  Dimp1xAsInteger,p1yAsInteger

  Dimp2xAsInteger,p2yAsInteger

  DimnAsInteger,rAsInteger

  c1x=pic1.ScaleWidth\2

  c1y=pic1.ScaleHeight\2

  c2x=pic2.ScaleWidth\2

  c2y=pic2.ScaleHeight\2

  Ifc2x<c2yThenn=c2yElsen=c2x

   n=n-1

   pic1hDC=pic1.hdc

   pic2hDC=pic2.hdc

   Forp2x=0Ton

   Forp2y=0Ton



  Ifp2x=0Thena=Pi/2Elsea=Atn(p2y/p2x)

   r=Sqr(1&*p2x*p2x+1&*p2y*p2y)

   p1x=r*Cos(a+theta)

   p1y=r*Sin(a+theta)

   c0&=GetPixel(pic1hDC,c1x+p1x,c1y+p1y)

   c1&=GetPixel(pic1hDC,c1x-p1x,c1y-p1y)

   c2&=GetPixel(pic1hDC,c1x+p1y,c1y-p1x)

   c3&=GetPixel(pic1hDC,c1x-p1y,c1y+p1x)

   Ifc0&<>-1ThenSetPixelpic2hDC,c2x+p2x,c2y+p2y,c0

   Ifc1&<>-1ThenSetPixelpic2hDC,c2x-p2x,c2y-p2y,c1

   Ifc2&<>-1ThenSetPixelpic2hDC,c2x+p2y,c2y-p2x,c2

   Ifc3&<>-1ThenSetPixelpic2hDC,c2x-p2y,c2y+p2x,c3

   Next

   Next

  EndSub

  PrivateSubCommand1_Click()‘正常复制

 Picture2.Cls

 px=Picture1.ScaleWidth

 py=Picture1.ScaleHeight

 StretchBltPicture2.hdc,px,0,-px,py,Picture1.hdc,0,0,px,py,SRCCOPY

  EndSub

  PrivateSubCommand2_Click()‘180度倒立

 Picture2.Cls

 px=Picture1.ScaleWidth

 py=Picture1.ScaleHeight

 StretchBltPicture2.hdc,0,py,px,-py,Picture1.hdc,0,0,px,py,SRCCOPY

  EndSub

  PrivateSubCommand3_Click()‘45旋转

 Picture2.Cls

 Callbmp_rotate(Picture1,Picture2,3.14/4)

  EndSub

  PrivateSubForm_Load()

 onErrorResumeNext

 Me.Caption=App.Title"添加应用程序标题

 Me.Left=(Screen.Width-Me.Width)/2

 Me.Top=(Screen.Height-Me.Height)/2"窗体具中

 Picture1.ScaleMode=3

 Picture2.ScaleMode=3

  EndSub

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。