查看: 8  |  回复: 0
  VB6 代码管家-截取图片
楼主
发表于 2024年12月8日 22:30
=======================按键截取===================
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Sub Command1_Click()
	Call keybd_event(vbKeySnapshot, 0, 0, 0)     '全屏
End Sub

Private Sub Command2_Click()
	Call keybd_event(vbKeySnapshot, 1, 0, 0)     '当前窗体
End Sub

Private Sub Command3_Click()
	SavePicture Clipboard.GetData, "C:\图片.bmp" '保存图片
End Sub
=========================非(按键截取)===========================
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
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_Load()
    Me.Hide                '窗体不可见
    On Error Resume Next   '出错忽略
    Me.AutoRedraw = True   '自动重画
    Timer1.Interval = 1000 '每十秒一抓
End Sub

Private Sub Timer1_Timer()
BitBlt hDC, 0, 0, Screen.Width, Screen.Height, GetDC(0), 0, 0, vbSrcCopy   '抓屏
SavePicture Me.Image, "c:\图片.BMP"    '保存
End Sub
=========================指定区域截取===========================
Option Explicit
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
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 Declare Function CreateDC Lib "gdi32" Alias "CreateDCA" (ByVal lpDriverName As String, ByVal lpDeviceName As String, ByVal lpOutput As String, lpInitData As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function CloseClipboard Lib "user32" () As Long

Sub ScrnCap(Lt As Integer, top As Integer, Rt As Integer, Bot As Integer) '屏幕截图核心函数
	Dim rWidth, rHeight, SourceDC, DestDC, BHandle, Wnd, DHandle
	rWidth = Rt - Lt
	rHeight = Bot - top
	SourceDC = CreateDC("DISPLAY", 0, 0, 0)
	DestDC = CreateCompatibleDC(SourceDC)
	BHandle = CreateCompatibleBitmap(SourceDC, rWidth, rHeight)
	SelectObject DestDC, BHandle
	BitBlt DestDC, 0, 0, rWidth, rHeight, SourceDC, Lt, top, &HCC0020
	Wnd = Screen.ActiveForm.hwnd
	OpenClipboard Wnd
	EmptyClipboard
	SetClipboardData 2, BHandle
	CloseClipboard
	DeleteDC DestDC
	ReleaseDC DHandle, SourceDC
End Sub

Private Sub Command1_Click()
	Call ScrnCap(0, 0, 100, 300) '4个参数分别为:左上角X,左上角Y,右上角X,右上角Y
	Image1.Picture = Clipboard.GetData()
End Sub
=========================裁剪图片=========================
Private Sub Command1_Click()
	Dim fn As String, xx As Single, yy As Single, ww As Single, hh As Single
	'fn = "c:\1.bmp"   '裁剪图片名及路径
	xx = 500           '裁剪横坐标
	yy = 500           '裁剪纵坐标
	ww = 100           '裁剪宽度
	hh = 100           '裁剪高度
	Picture1.Width = ww
	Picture1.Height = hh
	Picture1.PaintPicture Picture1.Picture, 0, 0, ww, hh, xx, yy, ww, hh
	Picture2.Picture = Picture1.Image
End Sub

Private Sub Form_Load()
	Me.ScaleMode = 3
	Picture1.Visible = False
	Picture1.BorderStyle = 0
	Picture1.AutoRedraw = True
	Picture1.ScaleMode = 3
End Sub


您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2024 MaNongKu.com