当前位置:编程学习 > VB >>

解释一段VB程序,本人新手

如下一段程序能够实现picture里的图片逆时针旋转90度,但是我看不懂程序 Private Sub Timer1_Timer() Dim p() w = Picture1.ScaleWidth h = Picture1.ScaleHeight ReDim p(w - 1, h - 1) For i = 0 To w - 1 For j = 0 To h - 1 p(i, j) = Picture1.Point(i, j) Next j Next i Picture1.Width = h + 4 * Picture1.BorderStyle Picture1.Height = w + 4 * Picture1.BorderStyle For i = 0 To h - 1 For j = 0 To w - 1 Picture1.PSet (i, w - j - 1), p(j, i) Next j Next i End Sub
答案:这段代码没什么不明白的地方嘛
 
'声明一个动态数组变量
 Dim p() 

 '取图片框的宽度与高度
  w = Picture1.ScaleWidth
  h = Picture1.ScaleHeight

'定义一个二维数组,VB的数组从0开始,而不是1,所以减1。
'这样就产生的数组个数与图片框的图片的点的个数相同。
  ReDim p(w - 1, h - 1)

' 下面这段通过二重循环,将图片中每个点的值存到二维数组里。刚好能存完。
    For i = 0 To w - 1
      For j = 0 To h - 1
        p(i, j) = Picture1.Point(i, j)
      Next j
    Next i

'下面首先将图片框的宽变成与原来的高相等,图片框的高变得与原来的宽相等。
'看起来好像旋转了90度似的。4 * Picture1.BorderStyle这个没有特别作用,只是在原来的基础稍稍增加点宽和高而已
 Picture1.Width = h + 4 * Picture1.BorderStyle
  Picture1.Height = w + 4 * Picture1.BorderStyle

'这段双重循环,将刚才取出的点重新写入到图片框里。不过是旋转90后再写入。
    For i = 0 To h - 1
      For j = 0 To w - 1
        Picture1.PSet (i, w - j - 1), p(j, i)
      Next j
    Next i
End Sub

上一个:一个很菜的vb问题
下一个:vb在文本框输入一个字符,发生什么事件

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,