谁能教下我BitBlt的用法我要经典实例,不要太难的Private Declare Function BitBlt Lib "gdi32" Alias "BitBlt" (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

解决方案 »

  1.   

    自己找帮助.你这样的问题以后没多少人会回答的.
    BitBlt 目标设备HDC,目标设备的起始X位置,起始Y位置,复制图象区域的长,宽,源设备HDC,复制源设备图像的起始X位置,复制源设备图像的起始Y位置,参数如果是原样复制的话,最后的参数定义是Const SRCCOPY=&HCC0020
      

  2.   

    不是太简单.而是你有没有去用心找过相关资料.
    你这个问题到GOOGLE上搜索可以搜出一大萝答案来.
    提问的话,首先是自己用心去找过了,找不到再来提问.
      

  3.   

    http://download.csdn.net/source/2368159
    http://download.csdn.net/source/1371365
      

  4.   

    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 Const SRCCOPY = &HCC0020
    Private Sub Command1_Click()
    BitBlt Picture2.hDC, 0, 0, Picture1.Width, Picture1.Height, Picture1.hDC, 100, 0, SRCCOPY
    End Sub
    Private Sub Form_Load()
    Picture1.Picture = LoadPicture("c:\1.jpg")
    End Sub
      

  5.   

    这个函数的确比较复杂,不过如果用好了功能的确非常的大。矛盾啊
    'Example Name:Creating a Transparent Bitmap '------------------------------------------------------------------------------
    '
    ' BAS Moduel Code
    '
    '------------------------------------------------------------------------------
    Option ExplicitPublic Type RECT 
      Left As Long
      Top As Long
      Right As Long
      Bottom As Long
    End Type Public Declare Function BitBlt Lib "gdi32" _ 
      (ByVal hDCDest As Long, ByVal XDest As Long, _
       ByVal YDest As Long, ByVal nWidth As Long, _
       ByVal nHeight As Long, ByVal hDCSrc As Long, _
       ByVal XSrc As Long, ByVal YSrc As Long, _
       ByVal dwRop As Long) As LongPublic Declare Function CreateBitmap Lib "gdi32" _
      (ByVal nWidth As Long, _
       ByVal nHeight As Long, _
       ByVal nPlanes As Long, _
       ByVal nBitCount As Long, _
       lpBits As Any) As LongPublic Declare Function SetBkColor Lib "gdi32" _
       (ByVal hdc As Long, _
        ByVal crColor As Long) As LongPublic Declare Function SelectObject Lib "gdi32" _
      (ByVal hdc As Long, _
       ByVal hObject As Long) As LongPublic Declare Function CreateCompatibleBitmap Lib "gdi32" _
      (ByVal hdc As Long, _
       ByVal nWidth As Long, _
       ByVal nHeight As Long) As LongPublic Declare Function CreateCompatibleDC Lib "gdi32" _
       (ByVal hdc As Long)As LongPublic Declare Function DeleteDC Lib "gdi32" _
       (ByVal hdc As Long) As LongPublic Declare Function DeleteObject Lib "gdi32" _
       (ByVal hObject As Long) As Long
    '------------------------------------------------------------------------------
    '
    ' Form Code
    '
    '------------------------------------------------------------------------------
     
    Option Explicit
    Private Sub Command1_Click()  Dim rc As RECT  With rc
       .Left = 0
       .Top = 0
       .Right = Picture1.ScaleWidth
       .Bottom = Picture1.ScaleHeight
      End With  TransparentBlt Form1.hdc, Form1.hdc, Picture1.hdc, rc, 20, 20, vbWhiteEnd Sub
    Private Sub TransparentBlt(OutDstDC As Long, _
                               DstDC As Long, _
                               SrcDC As Long, _
                               SrcRect As RECT, _
                               DstX As Integer, _
                               DstY As Integer, _
                               TransColor As Long)
       
      'DstDC- Device context into which image must be 
      'drawn transparently
      
      'OutDstDC- Device context into image is actually drawn, 
      'even though it is made transparent in terms of DstDC  'Src- Device context of source to be made transparent 
      'in color TransColor  'SrcRect- Rectangular region within SrcDC to be made 
      'transparent in terms of DstDC, and drawn to OutDstDC  'DstX, DstY - Coordinates in OutDstDC (and DstDC) 
      'where the transparent bitmap must go. In most 
      'cases, OutDstDC and DstDC will be the same 
      Dim nRet As Long, W As Integer, H As Integer
      Dim MonoMaskDC As Long, hMonoMask As Long
      Dim MonoInvDC As Long, hMonoInv As Long
      Dim ResultDstDC As Long, hResultDst As Long
      Dim ResultSrcDC As Long, hResultSrc As Long
      Dim hPrevMask As Long, hPrevInv As Long
      Dim hPrevSrc As Long, hPrevDst As Long  W = SrcRect.Right - SrcRect.Left + 1
      H = SrcRect.Bottom - SrcRect.Top + 1
       
     'create monochrome mask and inverse masks
      MonoMaskDC = CreateCompatibleDC(DstDC)
      MonoInvDC = CreateCompatibleDC(DstDC)
      hMonoMask = CreateBitmap(W, H, 1, 1, ByVal 0&)
      hMonoInv = CreateBitmap(W, H, 1, 1, ByVal 0&)
      hPrevMask = SelectObject(MonoMaskDC, hMonoMask)
      hPrevInv = SelectObject(MonoInvDC, hMonoInv)
       
     'create keeper DCs and bitmaps 
      ResultDstDC = CreateCompatibleDC(DstDC)
      ResultSrcDC = CreateCompatibleDC(DstDC)
      hResultDst = CreateCompatibleBitmap(DstDC, W, H)
      hResultSrc = CreateCompatibleBitmap(DstDC, W, H)
      hPrevDst = SelectObject(ResultDstDC, hResultDst)
      hPrevSrc = SelectObject(ResultSrcDC, hResultSrc)
       
    'copy src to monochrome mask
      Dim OldBC As Long
      OldBC = SetBkColor(SrcDC, TransColor)
      nRet = BitBlt(MonoMaskDC, 0, 0, W, H, SrcDC, _
                    SrcRect.Left, SrcRect.Top, vbSrcCopy)
      TransColor = SetBkColor(SrcDC, OldBC)
       
     'create inverse of mask
      nRet = BitBlt(MonoInvDC, 0, 0, W, H, _
                    MonoMaskDC, 0, 0, vbNotSrcCopy)
       
     'get background
      nRet = BitBlt(ResultDstDC, 0, 0, W, H, _
                    DstDC, DstX, DstY, vbSrcCopy)
       
     'AND with Monochrome mask
      nRet = BitBlt(ResultDstDC, 0, 0, W, H, _
                    MonoMaskDC, 0, 0, vbSrcAnd)
       
     'get overlapper
      nRet = BitBlt(ResultSrcDC, 0, 0, W, H, SrcDC, _
                    SrcRect.Left, SrcRect.Top, vbSrcCopy)
       
     'AND with inverse monochrome mask
      nRet = BitBlt(ResultSrcDC, 0, 0, W, H, _
                    MonoInvDC, 0, 0, vbSrcAnd)
       
    'XOR these two
      nRet = BitBlt(ResultDstDC, 0, 0, W, H, _
                    ResultSrcDC, 0, 0, vbSrcInvert)
       
     'output results
      nRet = BitBlt(OutDstDC, DstX, DstY, W, H, _
                    ResultDstDC, 0, 0, vbSrcCopy)
       
     'clean up
      hMonoMask = SelectObject(MonoMaskDC, hPrevMask)
      DeleteObject hMonoMask  hMonoInv = SelectObject(MonoInvDC, hPrevInv)
      DeleteObject hMonoInv  hResultDst = SelectObject(ResultDstDC, hPrevDst)
      DeleteObject hResultDst  hResultSrc = SelectObject(ResultSrcDC, hPrevSrc)
      DeleteObject hResultSrc  DeleteDC MonoMaskDC
      DeleteDC MonoInvDC
      DeleteDC ResultDstDC
      DeleteDC ResultSrcDCEnd Sub
      

  6.   

    具体点,现在先给一个参数说明 
    BOOL   BitBlt(   int   x,   int   y,   int   nWidth,   int   nHeight,   CDC*   pSrcDC,   int   xSrc,   int   ySrc,   DWORD   dwRop   ); 返回值:函数成功,返回非零值,否则为0。 参数:   x   指定目标矩形左上角的逻辑x坐标。     
    y   指定目标矩形左上角的逻辑y坐标。     
    nWidth   指定目标矩形和源位图的宽度(逻辑单位)。     
    nHeight   指定目标矩形和源位图的高度(逻辑单位)。     
    pSrcDC   指向CDC对象的指针,标识待拷贝位图的设备上下文。如果dwRop指定不包括源的光栅操作,则它必须为NULL。     
    xSrc   指定源位图左上角的逻辑X坐标。     
    ySrc   指定源位图左上角的逻辑Y坐标。     
    dwRop   指定要执行的光栅操作。光栅操作代码定义GDC如何合并输出操作中的颜色,包括当前画刷、可能的源位图和目标位图。 
    下面对dwRop列出光栅操作代码及其描述: 
    BLACKNESS   所有输出变黑。     
    DSTINVERT   反转目标位图。     
    MERGECOPY   使用布尔AND操作符合并特征与源位图。     
    MERGEPAINT   使用布尔OR操作符合并特征与源位图。     
    NOTSRCCOPY   拷贝反转源位图到目标。     
    NOTSRCERASE   反转使用布尔OR操作符合并源和目标位图的结果。     
    PATCOPY   拷贝特征到目标位图。     
    PATINVERT   使用布尔XOR操作符合并目标位图和特征。     
    PATPAINT   使用布尔OR操作符合并反转源位图和特征。用布尔OR操作符合并这项操作结果与目标位图。     
    SRCAND   使用布尔AND操作符合并目标像素和源位图。     
    SRCCOPY   拷贝源位图到目标位图。     
    SRCERASE   反转目标位图并用布尔AND操作符合并这个结果和源位图。     
    SRCINVERT   使用布尔XOR操作符合并目标像素和源位图。     
    SRCPAINT   使用布尔OR操作符合并目标像素和源位图。     
    WHITENESS   所有输出变白。     
    有关光栅操作代码的完整列表,请参阅联机文档“Win32   SDK程序员参考”附录节中的“关于光栅操作代码”。     说明: 
    从源设备上下文拷贝位图到这个当前设备上下文。 
    应用可以在字节边界上对齐窗口或客户区域,保证BitBlt操作发生在以字节对齐的矩形上(登记窗口类时设置设备CS_BYTEALLGNWINDOW或CS_BYTEALIGHCLIENT标记)。 
    在字节对齐矩形上的BitBlt操作比未经字节对齐的矩形上的BitBlt操作快许多。如果想对自己的设备上下文指定字节对齐类风格,必须登记窗口类而不要依赖Microsoft基本类。可使用全局函数AfxRegisterWndClass。 
    一旦使用目标设备上下文和使用源设备上下文,GDI变形nWidth和nHeight。如果结果延伸不匹配,必要时GDI使用Windows   StretchBlt函数压缩或拉伸源位图。 
    如果目标、源和特征位图颜色格式不同,BitBlt转换源和特征位图以匹配目标。转换中使用目标位图的前景和背景色。 
    BitBlt函数把单色位图转换为彩色时,它设置白色(1)为背景色,黑色(0)作为前景色。使用目标设备上下文的背景和前景色。要把彩色转换为单色,BitBlt把与背景色匹配的像素设置为白色,其余所有像素设置为黑色。在从彩色到单色的转换中,BitBlt使用彩色设备上下文的前景和背景色。 
    注意,并非所有的设备上下文都支持BitBlt。为检查给定设备上下文是否支持BitBlt,使用GetDeviceCaps成员函数并指定RASTERCAPS索引。
      

  7.   

    API一般GOOGLE一下都能找到现成的用法. 其实就是调用一个函数加几个参数而已.