我想对picturebox内的图像实现镜像,翻转,灰度转换以及反色等操作。具体到实现水平镜像功能的时候,我用paintpicture。
Public Sub comMirrorX()
'设 sx, sy, sw, sh为源左上角坐标,宽, 高
'Picture1是从外部加载的图像,visible设为false
'Picture2用于显示
... Dim sw, sh, sx, sy
sw = Picture1.ScaleWidth
sh = Picture1.ScaleHeight
sx = sw
sy = 0
Picture2.Picture = LoadPicture("")
Picture2.PaintPicture Picture1,0,0,sw,sh,sx,sy,-sw,sh,vbSrcCopy
...
End Sub 但是这样,只能实现一次性的镜像,也就是镜像以后,如果再次发出命令,回不到原图。我想在上面Picture2.PaintPicture语句后面添加
Picture1.Picture = LoadPicture("")
Picture1.PaintPicture Picture2,0,0,sw,sh,0,0,sw,sh,vbSrcCopy
运行时会出现“无效图片“ 的错误。 然后我考虑用Clipboard的功能。 Clipboard.SetData Picture2.Picture, 2
Picture1.Picture = Clipboard.GetData(2)
还是会出现“无效图片“ 刚开始用VB,不懂这些问题。还有,如何实现反复的镜像,敬请各位赐教。
Public Sub comMirrorX()
'设 sx, sy, sw, sh为源左上角坐标,宽, 高
'Picture1是从外部加载的图像,visible设为false
'Picture2用于显示
... Dim sw, sh, sx, sy
sw = Picture1.ScaleWidth
sh = Picture1.ScaleHeight
sx = sw
sy = 0
Picture2.Picture = LoadPicture("")
Picture2.PaintPicture Picture1,0,0,sw,sh,sx,sy,-sw,sh,vbSrcCopy
...
End Sub 但是这样,只能实现一次性的镜像,也就是镜像以后,如果再次发出命令,回不到原图。我想在上面Picture2.PaintPicture语句后面添加
Picture1.Picture = LoadPicture("")
Picture1.PaintPicture Picture2,0,0,sw,sh,0,0,sw,sh,vbSrcCopy
运行时会出现“无效图片“ 的错误。 然后我考虑用Clipboard的功能。 Clipboard.SetData Picture2.Picture, 2
Picture1.Picture = Clipboard.GetData(2)
还是会出现“无效图片“ 刚开始用VB,不懂这些问题。还有,如何实现反复的镜像,敬请各位赐教。
Picture1.Picture = Picture2.Image
用于表示当前图像的属性是image,不是picture