我在窗体上隐藏了一个picturebox,事件驱动后,picturebox为可见,后再在picturebox里定义坐标系,接着用line画图为什么画不出来啊?
谢谢帮助

解决方案 »

  1.   

    Private Sub Combo1_click()Select Case Combo1.Text
    Case "电机电压"
    Picture2.Visible = True
    Picture2.Scale (0, Picture2.ScaleHeight)-(Picture2.ScaleWidth, 0)
    Picture2.Line (Picture2.ScaleWidth / 2, Picture2.ScaleHeight)-(Picture2.ScaleWidth / 2, 0), vbBlack
    谢谢楼上回复
    程序是这样的,像楼上说的改动后还是不能显示啊
      

  2.   

    Option ExplicitPrivate Sub Combo1_click()
    Select Case Combo1.Text
    Case "电机电压"
    Picture2.Visible = True
    Picture2.Scale (0, 0)-(Picture2.ScaleWidth, Picture2.ScaleHeight)
    Picture2.Line (Picture2.ScaleWidth / 2, Picture2.ScaleHeight)-(Picture2.ScaleWidth / 2, 0), vbBlack
    End Select
    End SubPrivate Sub Form_Load()
    Combo1.AddItem "电机电压"
    Picture2.AutoRedraw = True
    End Sub
      

  3.   

    Picture2.AutoRedraw = True这一句是关键
      

  4.   

    Picture2.Visible = True
    Picture2.Scale (0, Picture2.ScaleHeight)-(Picture2.ScaleWidth, 0)
    Picture2.Line (Picture2.ScaleWidth / 2, Picture2.ScaleHeight)-(Picture2.ScaleWidth / 2, 0), vbBlack
    Picture2.Refresh '加这句试试
      

  5.   

    Picture2.Scale (0, Picture2.ScaleHeight)-(Picture2.ScaleWidth, 0)
    这个冲突了
    你定义了picture2的左上坐标是0,ScaleHeight,右下坐标是ScaleWidth,0,
    于实际picture使用的坐标系相反(左上0,0 右下 width,height)你后面画的线条,不在picture2显示的范围里面..你注意看看下面的程序的调试 输出就明白了:
    Private Sub Form_Load()
    Picture2.Visible = True
    '原始的picture坐标范围
    With Picture2
        Debug.Print .ScaleLeft, .ScaleTop, .ScaleWidth, .ScaleHeight
    End WithPicture2.Scale (0, Picture2.ScaleHeight)-(Picture2.ScaleWidth, 0)
    '修改后的坐标范围
    With Picture2
        Debug.Print .ScaleLeft, .ScaleTop, .ScaleWidth, .ScaleHeight
    '后面是你划线的坐标..
        Debug.Print .ScaleWidth / 2, .ScaleHeight, .ScaleWidth / 2, 0
    End With
    Picture2.Line (Picture2.ScaleWidth / 2, Picture2.ScaleHeight)-(Picture2.ScaleWidth / 2, 0), vbBlackEnd Sub
      

  6.   

    Picture2.Scale调整的是picture绘图区左上坐标,和大小(比例,刻度)并不能改变坐标系.坐标都是左小,右大,上小,下大.之前绘图区比如是100*100的一个区域,那么左上是0,0.右下是100,100
    Picture2.Scale (0, Picture2.ScaleHeight)-(Picture2.ScaleWidth, 0)
    后,左上是0,100,大小没变化,右下是 100,0,ScaleWidth=100,ScaleHeight=-100划线是(50,-100)-(50,0),正好在显示区域之外..