
| 出版日期:1999-08-09 总期号:847 本年期号:57 |
|
位图旋转
闫东 在vb中没有什么命令或函数能够实现将一个位图旋转一个角度后显示出来,但我们可以用画点的方式,将一个图片控件中的位图的像素点旋转一个角度后画入另一个图片控件中,当源图片控件中的像素都被画到目标图片控件中时,也就完成了位图的旋转。这里主要用到了vb中的两个方法:point方法和pset方法。显然这个方法的速度不会太快,因而适用于较小的图片。 下面介绍一下实现方法:进入vb中,建立一个新的窗体。在窗体中加入两个图片控件(picture1和picture2),设置它们的name属性为picsource和pictarget,并为picsource图片控件的picture属性设置一幅位图。再在窗体中加入一个按钮(commandrotorate),设置它的caption属性为“旋转”。然后加入以下代码: const pi = 3.14 private sub commandrototate—click() dim x as integer, y as integer dim x1 as integer, y1 as integer dim x2 as double, y2 as double dim x3 as double, y3 as double dim jiaodu as double dim hudu as double jiaodu = 45 ′角度 hudu = jiaodu pi / 180 ′弧度 picsource.scalemode = vbpixels pictarget.scalemode = vbpixels for x = 0 to pictarget.scalewidth x1 = x - pictarget.scalewidth \ 2 for y = 0 to pictarget.scaleheight y1 = y - pictarget.scaleheight \ 2 x2 = x1 cos(-hudu) + y1 sin(-hudu) y2 = y1 cos(-hudu) - x1 sin(-hudu) x3 = x2 + picsource.scalewidth \ 2 y3 = y2 + picsource.scaleheight \ 2 if x3 〉 0 and x3 〈 picsource.scalewidth - 1 and y3 〉 0 and y3 〈 picsource.scaleheight - 1 then pictarget.pset (x, y), picsource.point(x3, y3) end if next y next x end sub 运行后,按下“旋转”按钮,可以见到源图片控件中的位图旋转45度后进入到目标图片控件中。如果要改变旋转的角度,只需将jiaodu变量设置为相应值即可。 |
|||||||||||||||||