如何能实现图片任意角度的旋转,完成后保存成一个新的文件

解决方案 »

  1.   

    http://www.mndsoft.com/blog/blogview.asp?logID=358
      

  2.   

    用法能否讲的具体一点,其实我并不需要在界面上显示图片,只需要打开选择此图片后点旋转后就旋转90 度现保存到一个固定位置上就行,比如保存到c盘的根目录下叫1.bmp的文件即可
      

  3.   

    写了一大半,IE自动退出!
    再来一遍吧(大致思路\步骤)——
    1-将源图加载到stdpicture对象stdPic中
        stdPic=loadpicture(...)
    2-将stdPic放到内存DC对象hMemDc中
       hMemDc = CreateCompatibleDC(hdc)
       DeleteObject SelectObject(hMemDc, stdPic.Handle)
    3-获取源文件的宽、高
       stdPicWidth = ScaleX(stdPic.Width, vbHimetric, vbPixels)
       stdPicHeight = ScaleY(stdPic.Height, vbHimetric, vbPixels)
    4-创建另一内存DC对象hMemDc1,大小为hMemDc的宽、高对调,用于存放旋转90度后的位图
       hMemDc1 = CreateCompatibleDC(hdc)
       hBmp = CreateCompatibleBitmap(hdc, stdPicHeight , stdPicWidth )   '注意宽、高对调了位置
       DeleteObject SelectObject(hMemDc1, hBmp)
    5-将hMemDc中的位置旋转90度后贴到hMemDc1上,使用PlgBlt:
       Dim Pt(0 To 2) As POINTAPI
       Pt(0).X = stdPicHeight
       Pt(0).Y = 0
       Pt(1).X = stdPicHeight
       Pt(1).Y = stdPicWidth
       Pt(2).X = 0
       Pt(2).Y = 0
       PlgBlt .hdc, Pt(0), hMemDc, 0, 0, stdPicWidth, stdPicHeight, ByVal 0&, ByVal 0&, ByVal 0&
    6-将内存DC中位图保存为磁盘文件
       请参考本人的Blog文章:http://blog.csdn.net/xinliangyu/archive/2005/01/31/274900.aspx
      

  4.   

    http://blog.csdn.net/xinliangyu/archive/2005/01/31/274900.aspx下的 hDCToPicture函数,该函数返回值是一个stdPictrue对象,可直接用savepicture保存为磁盘文件
      

  5.   

    赞下xinliangyu(yxl)的精神!
    可是,PlgBlt是只能在windows nt下用的,98肯定用不了,xp没试过。(我只是看了一个朋友整理的api手册):
    适用平台 
    Windows NT
     
    另外,请楼主看下thirdapple的连接,zyl910写的,里面第一个程序就是~