DIB.inl
上传用户:weiyeyoule
上传日期:2007-01-03
资源大小:21k
文件大小:1k
源码类别:

GDI/图象编程

开发平台:

Visual C++

  1. inline void CDIB::WritePixel (UINT x,UINT y,COLORREF c)
  2. {
  3.     m_Bits[x + y * m_Size.cx] = c;
  4. }
  5. inline CDIB::CDIB ()
  6. {
  7.     m_Bits=NULL;
  8.     m_Bitmap=NULL;
  9.     m_Size=CSize ( 0, 0 );
  10. }
  11. inline CDIB::~CDIB ()
  12. {
  13.     Destroy ();
  14. }
  15. inline void CDIB::PasteToDC ( CDC *pDC, int x, int y )
  16. {
  17.     // x,y - the DC coordinates to start from
  18.     SetDIBitsToDevice ( pDC->m_hDC, x, y, m_Size.cx, m_Size.cy, 0, 0, 0, m_Size.cy, m_Bits, &m_Info, 0); 
  19. }
  20. inline void CDIB::GetFromBitmap ( CDC *pDC, CBitmap *pBitmap )
  21. {
  22.     if ( m_Bitmap )
  23.         GetDIBits ( pDC->m_hDC, HBITMAP(*pBitmap), 0, m_Size.cy, m_Bits, &(m_Info), DIB_RGB_COLORS ); 
  24. }
  25. inline void CDIB::CopyTo ( CDIB *Dib )
  26. {
  27.     // If DibSize Wrong Re-Create Dib
  28.     if ( (Dib->m_Size.cx!=m_Size.cx) || (Dib->m_Size.cy!=m_Size.cy) )
  29.         Dib->Create ( m_Size.cx, m_Size.cy );
  30.     // do Copy
  31.     memcpy ( Dib->m_Bits, m_Bits, m_Size.cx*m_Size.cy*4 );
  32. }
  33. inline void CDIB::CopyFrom ( const CDIB *Dib )
  34. {
  35.     // If DibSize Wrong Re-Create Dib
  36.     if ( (m_Size.cx!=Dib->m_Size.cx) || (m_Size.cy!=Dib->m_Size.cy) )
  37.         Create ( Dib->m_Size.cx, Dib->m_Size.cx );
  38.     // do Paste
  39.     memcpy ( m_Bits, Dib->m_Bits, m_Size.cx*m_Size.cy*4 );
  40. }
  41. inline COLORREF &
  42. CDIB::ColorAt (int x, int y)
  43. {
  44.     ASSERT ((x >= 0) && (x <= m_Size.cx) &&
  45.             (y >= 0) && (y <= m_Size.cy));
  46.     return m_Bits[x + y * m_Size.cx];
  47. }    
  48. inline BOOL 
  49. CDIB::operator != (const CDIB &dib) const
  50. {
  51.     return !(*this == dib);
  52. }