怎样将PictureBox中的截屏信息存储为图片文件?

rushing 2003-10-23 06:09:44
我存了后,总是灰色的底图,彩色信息存不住。
不知为什么?

'截屏
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
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 Long
Sub CaptureScreen(Picture1 As PictureBox, xSrc As Long, ySrc As Long, wSrc As Long, hSrc As Long)
Dim wScreen As Long
Dim hScreen As Long
Dim w As Long
Dim h As Long
Dim hdcScreen As Long
Dim r As Long

Picture1.Cls
wScreen = Screen.Width \ Screen.TwipsPerPixelX
hScreen = Screen.Height \ Screen.TwipsPerPixelY
Picture1.ScaleMode = vbPixels
w = Picture1.ScaleWidth
h = Picture1.ScaleHeight
hdcScreen = GetDC(0)
r = StretchBlt(Picture1.hDC, 0, 0, w, h, hdcScreen, xSrc / Screen.TwipsPerPixelX, ySrc / Screen.TwipsPerPixelY, wSrc / Screen.TwipsPerPixelX, hSrc / Screen.TwipsPerPixelY, vbSrcCopy)
End Sub

'保存
Picture1.Picture = Picture1.Image
SavePicture Picture1, "c:\image.bmp"
...全文
115 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hudonglin2003 2003-12-31
  • 打赏
  • 举报
回复
如果Picture1中有标签、文本框等,好象用下面的语句能将标签等转到Picture2去。
BitBlt Picture2.hDc, 0, 0, Picture1.Width, Picture1.Height, Picture1.hDc, 0, 0, vbSrcCopy
但是现在如果要将Pictrue2的图片保存到一个文件好象又不行了。
SavePicture Picture2, "c:\image.bmp"
rainstormmaster 2003-10-23
  • 打赏
  • 举报
回复
注意这两个属性的设置:
AutoRedraw
ScaleMode
lwplwp123 2003-10-23
  • 打赏
  • 举报
回复
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

把Picture1所在的大小里能看到的东西全转成一个图片放到Picture2里
BitBlt Picture2.hDc, 0, 0, Picture1.Width, Picture1.Height, Picture1.hDc, 0, 0, vbSrcCopy

我用过这个方法,是彩的呀。
你再试一下。

7,789

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧