基础不好出来的问题,请高手顺便讲讲原因!我用的是VB。
一个窗体上有一个PictureBox 大小50*50,可随窗体拉大拉小现在画在PictureBox 上画一条直线,长度100问题出现,画的线只有50长,拉大窗体也是50长,如果把窗体拉大到80*80,然后再拉回50*50,这时候再画100长直线,直线却成了80长的即使窗口只有50*50。 这是什么原因呢??我想一画出来,即使窗口小也是完整的线,郁闷啊, 请高手指点一下。还有我应该怎么设置刷新
//////////////////////////代码////////////////////////////////////Prv 是PictureBox的name
Private Sub Command1_Click()
Prv.AutoRedraw = True
Prv.Line (0, 0)-(1000, 300)
Prv.AutoRedraw = FalseEnd SubPrivate Sub Form_Load()
On Error Resume Next
    Command1.Left = 0
    Command1.Top = 0
    Prv.Left = 0
    Prv.Top = Command1.Height
    Prv.Width = Form1.ScaleWidth
    Prv.Height = Form1.ScaleHeight - Prv.Top
End SubPrivate Sub Form_Resize()
On Error Resume Next
    Command1.Left = 0
    Command1.Top = 0
    
    Prv.Left = 0
    Prv.Top = Command1.Height
    Prv.Width = Form1.ScaleWidth
    Prv.Height = Form1.ScaleHeight - Prv.Top
    
End Sub
/////////////////////////////完////////////////////////////////////

解决方案 »

  1.   

    建议用两个pictrue控件嵌套,一个做容器,一个用来画图,这样就能解决你说的问题
      

  2.   

    zzyong00 你说的是不是要把里面的那个picturebox 要事先设的很大啊,要不然也是只能画到一半的,谁能不能帮我把那个短代码修改一下
      

  3.   

    改下你的代码,你看看是不是这个意思:
    Dim X As Single
    Dim Y As SingleSub LetLine()
        prv.Line (0, 0)-(X * prv.Width, Y * prv.Height)
    End SubPrivate Sub Command1_Click()
        call LetLine
    End SubPrivate Sub Form_Load()
    On Error Resume Next    Command1.Left = 0
        Command1.Top = 0
        prv.Left = 0
        prv.Top = Command1.Height
        prv.Width = Form1.ScaleWidth
        prv.Height = Form1.ScaleHeight - prv.Top
        prv.AutoRedraw = True
        X = 1000 / prv.Width
        Y = 300 / prv.Height
    End SubPrivate Sub Form_Resize()
    On Error Resume Next
        Command1.Left = 0
        Command1.Top = 0
        prv.Left = 0
        prv.Top = Command1.Height
        prv.Width = Form1.ScaleWidth
        prv.Height = Form1.ScaleHeight - prv.Top
        prv.Cls
        call LetLine
    End Sub
      

  4.   

    TO wenxjie:是哪个意思,pictruebox会把超过它大小的线截掉,所以在画线前,先判断你要画线的长度是否超过了当当前pictruebox的大小,如超过,就增大pictruebox的大小,然后再画。你可以作为容器的pictruebox上加滚动条
      

  5.   

    谢谢  zzyong00  和 vbman2003 原来要先判断大小。