VB.NT用的是觸發(fā)事件,一按就會(huì)觸發(fā),要不你加個(gè)timer控件,延遲一秒
為資興等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及資興網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站建設(shè)、成都做網(wǎng)站、資興網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
標(biāo)題的問(wèn)題:你先把圖片保存,再加載
'模塊中
Declare Function GetDC Lib "user32" (ByVal hwnd As Long) _
As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
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
'form1中
Private Sub Command1_Click()
Dim hDCtmp As Long, picWidth As Double, picHeight As Double
Dim x As Double
Dim y As Double
x = Val(Text2.Text)
y = Val(Text3.Text)
picWidth = Val(Text3.Text)
picHeight = Val(Text4.Text)
hDCtmp = GetDC(0)
BitBlt Picture1.hdc, 0, 0, picWidth, picHeight, hDCtmp, x, y, vbSrcCopy
ReleaseDC 0, hDCtmp
End Sub
目的: 將屏幕按照指定坐標(biāo)和大小進(jìn)行截取成圖,在picture1顯示
問(wèn)題: 大小是相同了,為什么截取的坐標(biāo)不對(duì),只是屏幕上的左上
相信大家都用過(guò)QQ截圖功能。不過(guò)很多人并沒(méi)有真正掌握好它的用法。將QQ截圖與其它截屏和制圖軟件配合使用,會(huì)有意想不到的效果。
獲取顏色的RGB值
我們?cè)诰庉媹D片或網(wǎng)頁(yè)的時(shí)候,經(jīng)常需要獲取某種顏色的“RGB值”,所以很多人都安裝了第三方的顏色吸取工具。其時(shí)用QQ截圖鍵即可獲取屏幕上任意顏色的RGB值。
當(dāng)按下“Ctrl+Shift+A”彈出“截圖”提示框時(shí),提示框中的“當(dāng)前像素RGB”即為當(dāng)前鼠標(biāo)屏幕位置的顏色RGB值,將鼠標(biāo)移動(dòng)到你想查看的屏幕顏色上即可獲得相應(yīng)的RGB值(如圖1)。
圖1精確截取圖片大小
有時(shí)我們對(duì)要使用的截圖尺寸有嚴(yán)格要求,比如論壇簽名或QQ頭像等。用QQ截圖鍵可以按尺寸精確截取,一步到位無(wú)需再進(jìn)行后期裁剪了。
按下QQ截圖鍵,按住鼠標(biāo)不放選取截取范圍時(shí),在鼠標(biāo)上方會(huì)有一個(gè)信息框顯示當(dāng)前范圍的詳細(xì)信息,其中“矩形大小”就是以像素來(lái)表示的圖片的尺寸大小,括號(hào)內(nèi)的數(shù)字分別表示的是長(zhǎng)和高(如圖2)。松開鼠標(biāo)調(diào)整截圖框時(shí),對(duì)照“矩形大小”就可以按需要的尺寸來(lái)精確截圖范圍,然后用鼠標(biāo)點(diǎn)住截圖框?qū)⒔貓D框拖到要截取的圖片上,雙擊即可獲得所需尺寸的圖片了。
圖2圖片拼貼好幫手
大部分的截圖軟件一次只能截取一張圖片,當(dāng)要截取多張圖片并進(jìn)行拼貼組合時(shí),就需要一張一張截取全部保存后再進(jìn)行拼貼操作,非常麻煩。
我們知道用QQ截圖鍵截取的圖片可以在任一個(gè)可以粘貼圖片的程序中使用,這樣只需用截圖軟件進(jìn)行一次截圖操作,剩下的圖片用QQ截圖鍵來(lái)截取,然后依次粘貼到截圖軟件的窗口中即可快速進(jìn)行拼貼操作了,是不是很方便啊。
小提示:QQ截圖鍵無(wú)需打開聊天窗口即可使用,截取的圖片在任一可粘貼圖片的程序窗口中如畫圖、Word等,使用“粘貼”命令即可使用
QQ有隱私泄露模式,涉及信息安全的時(shí)候無(wú)法截圖,想辦法讓對(duì)方進(jìn)入這個(gè)狀態(tài)即可,例如在回信欄加上密碼二字之類的
下面的代碼是我很欣賞的編程牛人CBM666的,你看下就應(yīng)該能明白意思了,需要的haunted自己修改一下,我運(yùn)行過(guò)了可以運(yùn)行成功,不會(huì)截到其它窗體只是打印當(dāng)前窗體
友情提示:你點(diǎn)下打印鍵的時(shí)候沒(méi)有提示會(huì)直接打印出窗口內(nèi)容來(lái),沒(méi)有確定取消的按鈕的,當(dāng)初我在公司試的時(shí)候隨便貼了個(gè)很爛的圖就給打出來(lái)了,還被人笑了。。。
'添加 Picture1 Picture2 各別放一張圖片 窗體也可加圖片, 只是測(cè)試用罷了.
,Text1 隨便打一些內(nèi)容,(只是測(cè)試用)
'再隨便加一個(gè)Picture3 用來(lái)保存圖片
'Command1 抓圖存圖 Command2 打印
'本代碼是將窗體內(nèi)所有的控件與窗體一起保存到Picture3再打印出來(lái).
Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const theScreen = 0 '整個(gè)Screen
Const theForm = 1 '當(dāng)前活動(dòng)界面
Private Sub Form_Load()
Command1.Caption = "抓取窗體"
Command2.Caption = "打 印"
Picture3.Move Screen.Width
Picture3.AutoRedraw = True
Picture3.BorderStyle = 0
Me.AutoRedraw = False
Clipboard.Clear
End Sub
Private Sub Command1_Click()
Me.Refresh
Picture3.Picture = LoadPicture()
Picture3.Width = Me.Width
Picture3.Height = Me.Height
Call keybd_event(vbKeySnapshot, 1, 0, 0)
DoEvents
Picture3.Picture = Clipboard.GetData(vbCFBitmap)
Set Picture3.Picture = Picture3.Image '此時(shí)才真正顯示Picture
'SavePicture Picture3.Image, "c:\kkkw.bmp"
End Sub
Private Sub Command2_Click()
Printer.PaintPicture Picture3.Picture, 0, 0, Picture3.Width, Picture3.Height
Printer.EndDoc
End Sub
有空你搜索下CBM666的代碼,絕對(duì)能給你很大收獲