资讯   |   开发   |   选机中心   |   产品大全 | IBM | 惠普 | 联想 | 戴尔 | 苹果 | 神舟
更多: | 华硕 | 明基 | 方正 | 紫光 | TCL | 夏新 | 联宝 | 宏碁 | 七喜 | 长城 | 清华同方 | 海尔 | 三星 | 东芝 | 索尼 | 富士通 | LG | 技术 | ddnoon
当前位置:笔记本 > 软件开发 >
Advertisement
文章正文

★ ■ API高手请进,关于截屏的问题 ■ ★

类型:转载   责任编辑:asp.net   日期:2007/05/23


热门软件下载:


   

1.怎样截取屏幕上指定矩形(比如可以指定x1、y1、x2、y2的值)的图像到我的图片框?  
   
  2.怎样让程序1图片框中的图像显示在程序2的图片框中?这个不是截屏,必须用获得程序1图片框的句柄的方法。

网友回答:

发表者:Sun_Jianhua

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

发表者:thirdapple

如果被覆盖,获得hdc也白搭

发表者:BlueBeer

晕,想太多了吧,第2个问题可以直接赋值!

发表者:rainstormmaster

//晕,想太多了吧,第2个问题可以直接赋值!  
   
  直接赋值恐怕不行,注意这是跨进程的程序,怎么赋值?  
   
   
  //如果被覆盖,获得hdc也白搭  
   
  是这样的  
 

发表者:twt326

UP

发表者:DemonLoveLizzy

你用SavePicture存的什么?如果窗体上是图片,那么存它的PICTURE是原图片大小,存它的IMAGE是屏幕大小。如果窗体上的东西是画的,那还是画在PICTUREBOX里比较好,保存PICTUREBOX的IMAGE,保存的BMP是PICTUREBOX的大小

发表者:achinacracker

你的意思是,截取指定区域的图象?如果是的话,QQ:81448648

发表者:laisiwei

我来个答非所问的  
   
  功能像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  
 

发表者:AKillGodKillBuddha

up

发表者:jam021

关注,帮你顶!


 

 
热门推荐笔记本: 清华紫光笔记本
相关文章:
webmaster:popbb@126.com   最佳浏览:1024X768 MSIE
©2007 popbb.net All Rights Reserved