类型:转载 责任编辑:asp.net 日期:2007/05/23
热门软件下载:
1.怎样截取屏幕上指定矩形(比如可以指定x1、y1、x2、y2的值)的图像到我的图片框?
2.怎样让程序1图片框中的图像显示在程序2的图片框中?这个不是截屏,必须用获得程序1图片框的句柄的方法。
网友回答:
1.
dim hScreen as long
hScreen=GetDC(0)
bitblt hscreen,x1,y1,x2,y2,pic1.hdc,1,1,vbsrccopy
2.
同上,bitblt pic2.hdc,0,0,pic2.scalewidth,pic2.scaleheight,pic1.hdc,0,0,vbsrccopy
如果被覆盖,获得hdc也白搭
晕,想太多了吧,第2个问题可以直接赋值!
//晕,想太多了吧,第2个问题可以直接赋值!
直接赋值恐怕不行,注意这是跨进程的程序,怎么赋值?
//如果被覆盖,获得hdc也白搭
是这样的
UP
你用SavePicture存的什么?如果窗体上是图片,那么存它的PICTURE是原图片大小,存它的IMAGE是屏幕大小。如果窗体上的东西是画的,那还是画在PICTUREBOX里比较好,保存PICTUREBOX的IMAGE,保存的BMP是PICTUREBOX的大小
你的意思是,截取指定区域的图象?如果是的话,QQ:81448648
我来个答非所问的
功能像QQ的截屏.运行程序后用鼠标在屏幕上画个框.然后框里的图片就会放到剪贴板里.
把以下文字保存到文本文件中,命名为Form1.frm就可以用了
VERSION 5.00
Begin VB.Form Form1
BorderStyle = 0 None
Caption = "Form1"
ClientHeight = 3195
ClientLeft = 0
Client = 0
ClientWidth = 4680
Linkic = "Form1"
MaxButton = 0 False
MinButton = 0 False
ScaleHeight = 213
ScaleMode = 3 Pixel
ScaleWidth = 312
ShowInTaskbar = 0 False
StartUpPosition = 3 窗口缺省
Begin VB.PictureBox Picture2
AutoRedraw = -1 True
BorderStyle = 0 None
Height = 495
Left = 1200
ScaleHeight = 33
ScaleMode = 3 Pixel
ScaleWidth = 81
TabIndex = 1
= 2520
Visible = 0 False
Width = 1215
End
Begin VB.PictureBox Picture1
BorderStyle = 0 None
Height = 2175
Left = 0
ScaleHeight = 145
ScaleMode = 3 Pixel
ScaleWidth = 241
TabIndex = 0
= 0
Width = 3615
Begin VB.Shape Shape1
Height = 735
Left = 360
= 360
Visible = 0 False
Width = 1815
End
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Private Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags 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 GetDC Lib "user32" (ByVal hwnd As Long) As Long
Const SWP_NOMOVE = &H2
Const SWP_NOSIZE = &H1
Const HWND_TOPMOST = -1
Dim XX As Long
Dim YY As Long
Dim MD As Boolean
Private Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Private Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Const RGN_OR = 2
Private Sub Form_Click()
End
End Sub
Private Sub Form_Load()
Picture1.AutoRedraw = True
Picture1.Width = Me.Width
Picture1.Height = Me.Height
Me.WindowState = 2
BitBlt Picture1.hDC, 0, 0, Screen.Width / Screen.TwipsPerPixelX, Screen.Height / Screen.TwipsPerPixelY, GetDC(0), 0, 0, vbSrcCopy
End Sub
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
XX = X
YY = Y
Shape1.Left = XX
Shape1. = YY
Shape1.Width = XX
Shape1.Height = YY
Shape1.Visible = True
End If
End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
If X > XX Then
Shape1.Left = XX
Shape1.Width = X - XX
Else
Shape1.Left = X
Shape1.Width = XX - X
End If
If Y > YY Then
Shape1. = YY
Shape1.Height = Y - YY
Else
Shape1. = Y
Shape1.Height = YY - Y
End If
End If
End Sub
Private Sub Picture1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim Regn As Long
Dim CER As Long
Dim l As Long, t As Long, w As Long, h As Long
l = IIf(X > XX, XX, X)
w = IIf(X <= XX, XX, X)
t = IIf(Y > YY, YY, Y)
h = IIf(Y <= YY, YY, Y)
Regn = CreateRectRgn(XX, YY, XX + 1, Y)
CER = CreateRectRgn(X - 1, YY, X, Y)
CombineRgn Regn, Regn, CER, RGN_OR
CER = CreateRectRgn(X, Y - 1, XX, Y)
CombineRgn Regn, Regn, CER, RGN_OR
CER = CreateRectRgn(X, YY, XX, YY + 1)
CombineRgn Regn, Regn, CER, RGN_OR
SetWindowRgn Me.hwnd, Regn, True 创建窗体
Picture1.Visible = False
Me.BackColor = 0
SetWindowPos Me.hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE Or SWP_NOSIZE
Me.Visible = False
Picture2.Width = w - l
Picture2.Height = h - t
Picture2.Cls
BitBlt Picture2.hDC, 0, 0, w, h, GetDC(0), l, t, vbSrcCopy
DoEvents
Clipboard.SetData Picture2.Image
End
End Sub
up
关注,帮你顶!