Private Sub Command1_Click()
Picture2.AutoRedraw = True
BitBlt Picture2.hdc, 0, 0, Picture1.Width, Picture1.Height, Picture1.hdc, 0, 0, SRCCOPY
Picture2.AutoRedraw = False
End Sub真是奇怪啊,以前没发现去掉 Picture2.AutoRedraw = True 却能画出来
Picture2.AutoRedraw = True
BitBlt Picture2.hdc, 0, 0, Picture1.Width, Picture1.Height, Picture1.hdc, 0, 0, SRCCOPY
Picture2.AutoRedraw = False
End Sub真是奇怪啊,以前没发现去掉 Picture2.AutoRedraw = True 却能画出来
加上用 Refresh 强制刷新试试
BitBlt Picture2.hdc, 0, 0, Picture1.Width, Picture1.Height, Picture1.hdc, 0, 0, SRCCOPY
Picture2.Refresh
For N = 1 To Picture1.Width
For M = 1 To Picture1.Height
P1 = GetPixel(Picture1.hdc, N, M)
If P1 = RGB(0, 0, 0) Then
P2 = SetPixel(Picture2.hdc, N + Picture1.Width, M, RGB(255, 255, 255))
Else
P2 = SetPixel(Picture2.hdc, N + Picture1.Width, M, RGB(0, 0, 0))
End If
Next M
Next N SavePicture Picture2.Image, App.Path + "\2.bmp"
图可以画出来,但保存的是一张白图试了Picture2.Refresh,也给清空了
直接使用VbSrcCopy即可.2.Bitblt来源如果为不可见(在窗体外或被遮盖),必需将AutoRedraw设为True3.BitBlt这个API使用的座标与图片尺寸都是用象素的,如果你的Picture1或Picture2的ScaleMode没有设定为3 则你必需将座标与图片尺寸都要除上15(Screen.TwipsPerPixelX 或Screen.TwipsPerPixelY)
Private Sub Command1_Click()
Picture2.AutoRedraw = True
BitBlt Picture2.hDC, 0, 0, 250, 350, Picture1.hDC, 0, 0, vbSrcCopy
Picture2.Refresh
SavePicture Picture2.Image, AppDisk & "tt.bmp"
MsgBox "保存完成!"
End Sub