VB的图片框picturebox的句柄HDC在我改变其大小时还是指向原始大小位置上去,
例如:我在图片框上画一个椭圆,在图片框为原来大小的2倍或是3倍的时候图片框的hdc还是指向1倍大小的时候。现在我想让这个hdc指向当前大小的的位置应该怎么做!!!!!!

解决方案 »

  1.   

    Dim Wration As Double
    Dim Hration As Double
    Private Sub Form_Load()Wration = Picture1.Width / Me.Width
    Hration = Picture1.Height / Me.Height
    End SubPrivate Sub Form_Resize()
        Picture1.Width = Me.Width * Wration
        Picture1.Height = Me.Height * Hration
        Picture1.AutoRedraw = True
        Picture1.Scale (0, 100)-(100, 0)
        Draw Picture1
    End SubPrivate Sub Draw(pic As PictureBox)
        pic.Cls
        pic.Circle (50, 50), 4, vbRed
        pic.Line (20, 20)-(80, 70), vbGreen, B
        For i = 1 To 100
            pic.PSet (i, Sin(i / 10) * 50 + 50), vbBlue
        Next
    End Sub
      

  2.   


    HDC本来就不变?????但是在msdn中说:注意 hDC 属性值可以在程序运行中改变,因此不要将该值存储在变量中,应在每次需要时使用 hDC 属性。 AutoRedraw 属性能引起 hDC 属性改变。如果窗体或 窗体 PictureBox 容器的 AutoRedraw 属性设置为 True,hDC 将作为持久图形 的设备关联句柄(等价于 Image 属性)。当 AutoRedraw 属性为 False 时,hDC 属性是窗体窗口或 PictureBox 容器的真正的 hDC 值。程序运行中,不论 AutoRedraw 设置为何值,hDC 属性都可以改变。如果 HasDC 属性设为 False, 新的设备上下文将由系统建立,并且 hDC 属性值在每次被调用时改变。
      

  3.   

    而且即使我把autoredraw设为false时,还是出现那样的情况。这个hdc就真的不能随着我图片框的变化而变化吗?就没有别的办法实现了?我还试过把我要花的图先放在后面一个图片上然后把它从后面的图考到我所见的图片框,但是那样出现了别的一些问题,例如:有些画好的图不见了之类的。