【实例说明】 图像的翻转在多媒体编程中也经常用到,常用的翻转有翻转90度等。本例将讲解如何对图像进行翻转操作。运行程序,单击所要“旋转90角度”按钮,实现90旋转。(本例只给出了逆时针旋转90度的,顺时针旋转90度、水平翻转、垂直翻转等网友可自行编写。)
【编程思路】 运用Bitblt函数可将屏幕上的图像拷贝到VB中的窗体对象上。Bitblt函数功能:对指定的设置环境区域中的像素进行位块转换,以传送到另一个设备环境。其中进行位块转换的设备环境为源设备环境,要传送到的设备为目标设备环境。源环境和目标环境必须相容。下面是API函数声明及参数:
函数声明:
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
参数:
hDestDc:目标设备环境句柄。
X:目标设备环境矩形区域左上角的X逻辑坐标
Y:目标设备环境矩形区域左上角的Y逻辑坐标
nWidth:源和目标矩形区域的逻辑宽度。
nHeight:源和目标矩形区域的逻辑高度。
hScrDC:源设备环境句柄。
xSrc:源矩形区域左上角的X逻辑坐标。
ySrc:源矩形区域左上角的Y逻辑坐标。
dwRop:指定光栅运行代码。
返回值:如果函数调用成功,返回非0值,否则返回0值。
【设计步骤】
1.新建一个标准工程,创建一个新窗体,默认名为Form1。
2.在窗体上放置两个PictureBox控件和三个CommandButton控件。
3.将Picture1载入图片,并将其ScaleMode属性设置为3-Pixel(像素)。
4.源程序 [素材源程序下载]
Dim h As Long
Dim w As Long
Const srCopy = &HCC0020
'API函数声明
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 Sub Command1_Click()
For j = 0 To h Step 1
For i = 0 To w Step 1
BitBlt Picture2.hDC, i, j, 1, 1, Me.Picture1.hDC, i, j, srCopy
Next i
Next j
End Sub
'逆时针旋转90度
Private Sub Command2_Click()
For j = 0 To h Step 1
For i = 0 To w Step 1
BitBlt Picture2.hDC, i, j, 1, 1, Me.Picture1.hDC, j, i, srCopy
Next i
Next j
End Sub
'退出
Private Sub Command3_Click()
Unload Me
End Sub
Private Sub Form_Load()
h = Picture1.ScaleHeight
w = Picture1.ScaleWidth
End Sub
|