我在PictureBox中放上了一个标签label1,但保存为图像时只保存了PictureBox中的图像内容,标签内容无法连同PictureBox控件的内容一起保存,谁有办法解决?

解决方案 »

  1.   

    用Save保存肯定不行了,用抓图的办法。
      

  2.   

    Private Sub Command1_Click()
    With Picture1
        .AutoRedraw = True
        .CurrentX = Label1.Left
        .CurrentY = Label1.Top
        .Font = Label1.Font
        .ForeColor = Label1.ForeColor
    End With
    Picture1.Print Label1.Caption
    SavePicture Picture1.Image, "d:\1.bmp"
    End Sub变通方法
      

  3.   

    楼上的一个比一个牛, 脑力激荡啊 ?? 呵呵..... 害得我自叹不如, 代码都不敢贴了.这是我做的 Label 不知楼上几位还有没有可变通的办法 ?
    效果图:
    http://p.blog.csdn.net/images/p_blog_csdn_net/cbm666/366646/o_c9147b8901c52eb00e244414.jpg
      

  4.   

    能不能让label标签作为PictureBox的子控件呢
      

  5.   

    Set Label1.Container = Picture1
      

  6.   

    刘老师的图片很漂亮!
    您有代码,也请贴出来让大家开开眼界啊
    不知您的label有何特别,难道就没有变通方法了?
      

  7.   

    哈哈, 我这个Label是有0-255的透明度, 你可以连续保存256张.bmp图片, 如果你的是2000的系统可以短短几行就保存为.jpg, XP 也可以保存为.jpg 但代码比较麻烦
      

  8.   

       控件为Picture1,Picture2,Command1,label1放在Picture1上,在Picture1导入一张图片,然后在Picture1按下鼠标左键不放拖动(试选中label1),再按Command1,怎么样,你看到了什么?再保存Picture2上的图片。
    Option Explicit
    Dim lngOldX As Long, lngOldY As Long, lngUpX As Long, lngUpY As Long
    Private Const SRCCOPY = &HCC0020 ' (DWORD) dest = source
    Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC 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 dwRop As Long) As Long
    Private Sub Command1_Click()
        Picture2.Cls
        Picture1.Line (lngOldX, lngOldY)-(lngUpX, lngUpY), , B
        BitBlt Picture2.hDC, 0, 0, lngUpX - lngOldX, lngUpY - lngOldY, Picture1.hDC, lngOldX, lngOldY, SRCCOPY
    End SubPrivate Sub Form_Load()
        Picture1.DrawMode = 10
        Picture1.DrawStyle = 2
    End SubPrivate Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
        lngOldX = X: lngOldY = Y
    End SubPrivate Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
        Static sOldX As Long, sOldY As Long
        
        If Button = vbLeftButton Then
            Picture1.Line (lngOldX, lngOldY)-(X, Y), , B
            Picture1.Line (lngOldX, lngOldY)-(sOldX, sOldY), , B
        End If
        
        sOldX = X: sOldY = Y
    End SubPrivate Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
        lngUpX = X
        lngUpY = Y
    End Sub
      

  9.   

    '添加 Picture1 Picture2 label1Option Explicit
    Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC 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 dwRop As Long) As Long
    Private Sub Form_Activate()
       Picture1.AutoRedraw = False
       'Set Label1.Container = Picture1
       With Picture2
          .AutoRedraw = True
          .Width = Picture1.Width
          .Height = Picture1.Height
          .Move Screen.Width
       End With
    End SubPrivate Sub Picture1_Click()
       Call BitBlt(Picture2.hdc, 0, 0, Picture1.Width, Picture1.Height, Picture1.hdc, 0, 0, vbSrcCopy)
       SavePicture Picture2.Image, "c:\tt.bmp"
       Msgbox "保存完成"
    End Sub