top
Loading...
VB中任意旋轉位圖的實現

在VISUALBASIC中沒有什么命令或函數能夠實現 將一個位圖旋轉一個角度后顯示出來,但我們可以用畫點的方式,將一個圖畫盒中的位圖 中的像素點旋轉一個角度后畫入另一個圖畫盒中,當源圖畫盒中的像素都被畫到目標圖畫 盒中時,也就完成了位圖的旋轉。

這里主要用到了VISUALBASIC中的兩個方法:POINT 方法和PSET方法。POINT方法的作用是從源圖畫盒中提取一個像素點的顏色值;而PSET方法 的作用是按照旋轉后的坐標和相應像素點的顏色值在目標圖畫盒中畫點。顯然這個方法的 速度不會太快,因而適用于較小的圖片。下面介紹一下實現方法:

進入VISUALBASIC中,建立一個新的窗體。在窗體 中加入兩個圖畫盒控件(Picture1和Picture2),設置它們的Name屬性為PicSource和PicTarget, 并為PicSource圖畫盒的Picture屬性設置一幅位圖。再在窗體中加入一個按鈕(CommandRotorate), 設置它的Caption屬性為“旋轉”。然后加入以下代碼:

OptionExplicitConstPi=3.14PrivateSubCommandRototate_Click()DimxAsInteger,yAsIntegerDimX1AsInteger,Y1AsIntegerDimX2AsDouble,Y2AsDoubleDimX3AsDouble,Y3AsDoubleDimJiaoDuAsDoubleDimHuDuAsDoubleJiaoDu=45角度HuDu=JiaoDu*Pi/180弧度PicSource.ScaleMode=vbPixelsPicTarget.ScaleMode=vbPixelsForx=0ToPicTarget.ScaleWidthX1=x-PicTarget.ScaleWidth2Fory=0ToPicTarget.ScaleHeightY1=y-PicTarget.ScaleHeight2X2=X1*Cos(-HuDu)+Y1*Sin(-HuDu)Y2=Y1*Cos(-HuDu)-X1*Sin(-HuDu)X3=X2+PicSource.ScaleWidth2Y3=Y2+PicSource.ScaleHeight2IfX3>0AndX30AndY3

運行后,按下“旋轉”按鈕,可以見到源圖畫盒中的 位圖旋轉45度后進入到目標圖畫盒中。如果要改變旋轉的角度,只需將JiaoDu變量設置為 相應值即可。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗