[说明] 以下Visual Basic代码实现了对位图(BMP)进行旋转显示。以下程序共实现了对BMP位图图形进行 180°旋转、90°旋转(顺时针)、90°旋转(逆时针)、水平翻转、垂直翻转共5项处理。显示界面如图12-8所示。仔细阅读[代码7-1]至[代码7-3],完成 (n) 代码,并写在对应栏内。
[代码7-1] Begin VB. Form Form1 AutoRedraw =-1 ’True Caption="图像的施转" //...窗体描述( 略 ) Begin VB. CommandButton Command7 Caption="退出" //...窗体描述(略 ) End Begin VB.CommandButton Command6 Caption = "复位" //...窗体描述(略) End Begin VB.CommandButton Command5Caption= "垂直翻转" //...窗体描述(略) End Begin VB.CommandButton Command4Caption="水平翻转" //...窗体描述(略) End Begin VB.CommandButton Command3Caption= "90°(逆时针)" //...窗本描述(略) End Begin VB.CommandButton Command2Caption= "90°(顺时针)" //...窗体描述(略) End Begin VB.PictureBox Picture2 //...窗体描述(略) End Begin VB.CommandButton Command1 Caption="180°" //...窗体描述(略) End Begin VB.PictureBox Picture 1 //...窗体描述(略) End End [代码7-2] Private Declare Function BitBlt Lib "gdi32" ( ByVal hDestDC As Long,ByVal x As Long,ByVal y As Long,ByVal n Width As Long,ByVal nHeight As Long,ByVal hSrcDC As Long,ByVal xSrc As Long,ByVal ySrc As Long,ByVal dwRop As Long ) As Long Const srcopy = &HCC0020Dim h As IntegerDim w As Integer Private Sub Form_Load ( )Picture2.Picture = LoadPicture ( App.Path & "\a01.bmp") ’导入图片’h = Picture 1 .Heightw = Picture 1.Width End Sub [代码7-3] Private Sub Commandl_Click ( ) 旋转180° Picture2.Picture = LoadPicture ( "" ) For j = 0 To h Step 1For i = 0 To w Step 1 (1) Next i Next j End Sub Private Sub Command2_Click ( ) ’顺时针施转90°’ Picture2.Picture = LoadPicture ( "" ) For i-h To 0 Step-1For j - 0 To w Step 1 (2) Next j Next i End Sub Private Sub Command3_Click ( ) ’逆时针旋转90°’ Picture2.Picture = LoadPicture ("") For j =w To 0 Step -1For i = 0 To h Step 1 (3) Next i Next j End Sub Private Sub Command4 Click ( ) ’水平翻转 Picture2.Picture = LoadPicture ( "" ) For i = w To 0 Step -1For j = 0 To h Step 1 (4) Next j Next i End Sub Private Sub Command5_Click ( ) ’垂直翻转 Picture2.Picmre = LoadPicmre ( "" ) Forj = 0 To h Step 1For i = 0 To w Step I (5) Next i Next j End Sub Private Sub Command6_Click ( ) ’复位 Picture2.Picture = LoadPicmre ( "" ) For i = 0 To w Step 1For j = 0 To h Step 1 (6) Next j Next iEnd Sub
参考答案:
解析:BitB1t Picture2.hDC, i, j, 1, 1, Picture1.hDC w-i, h-j, srcopy(2) BitB1t Picture2.hDC, i, j, 1, 1, Picture1.hDC w-j, h-i, srcopy(3) BitB1t Picture2.hDC, i, j, 1, 1, Picture1.hDC j, i, srcopy(4) BitB1t Picture2.hDC, i, j, 1, 1, Picture1.hDC i, j, srcopy(5) BitB1t Picture2.hDC, i, j, 1, 1, Picture1.hDC w-i, h-j, srcopy(6) BitB1t Picture2.hDC, i, j, 1, 1, Picture1.hDC i, j, srcopy本题中Visual Basic代码实现了对位图(BMP)进行旋转显示。(1)为旋转180*时对BMP的操作。(2)为顺时针旋转90°时对BMP的操作。(3)为逆时针旋转90°时对BMP的操作。(4)为水平翻转时对BMP的操作。(5)为垂直翻转时对BMP的操作。 做题中注意阅读前后代码。