先将Picture1中放张图片,这时Command.picture=Picture1.image,没有问题。如果用StretchBlt将Picture1中图象绘制到Picture2上后,再Command.picture=Picture2.image就不行了,这是为什么啊?

解决方案 »

  1.   

    我的目的是,不能动态的生成N个PictureBox控件啊,不是说这个控件很浪费资源吗(我初学,不知道对不对)
      

  2.   

    是想给按钮换肤?Command1.Picture = LoadPicture("C:\1.bmp")
    Command1.Picture = LoadPicture("C:\2.bmp")这样子换呢?
      

  3.   

    Picture1没image属性吧,应该是:Picture1.picture。set Command.picture as picture2
    set Command.picture=Picture2.picture
      

  4.   

    回2楼:不是换肤,是想做个图片的缩略图,要显示某一文件夹下的所有图片回3楼:PictureBox有image属性啊,我试了,Command.picture=Picture1.image是好使的,但是换成第二种情况就不行了
      

  5.   

    应该可以,
    Private Sub Command2_Click()
    Set Command1.Picture = Picture1.Image
    End SubPrivate Sub Form_Load()
    Picture1.Line (0, 0)-(Picture1.ScaleWidth, Picture1.ScaleHeight), vbMagentaEnd Sub
    我只是用line画线生成的iamge,和API的StretchBlt生成的Image应该是一样的道理,你调整一下picture和command的大小试试,可以是因为不在可视区内吧
      

  6.   

    真的不行啊,要不就是我哪里做错了,楼上的现在有空吗,要不你试一下吧,看看我哪里写错了,代码就下面几行:
    Private Declare Function StretchBlt Lib "GDI32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal XSrc As Long, ByVal YSrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As LongPrivate Sub Command1_Click()    Picture1.Picture = LoadPicture("d:\1.jpg")
        
        StretchBlt Picture2.hdc, 0, 0, Picture2.Width, Picture2.Height, Picture1.hdc, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, vbSrcCopy
        
        Command1.Picture = Picture2.Image
        
        
    End Sub
    多谢了~~
      

  7.   

    楼上的代码,如果设picture2的AutoRedraw属性为Ture就OK了。。