ccidnet????

出版日期:1999-08-09 总期号:847 本年期号:57

本期导读
要闻综合
电脑工作室
市场
硬件
软件
infotimes
位图旋转

闫东

  在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变量设置为相应值即可。