示例#1
0
   /// <summary>Draws the specified dc.</summary>
   /// <param name="dc">dc.</param>
   /// <param name="image">image index.</param>
   /// <param name="rc">target rectangle.</param>
   /// <param name="sz">image size.</param>
   /// <param name="state">optionally ODS_DISABLED or ODS_SELECTED.</param>
   /// <returns></returns>
   BOOL  ImageListEx::Draw(CDC& dc, UINT image, CRect rc, CSize sz, UINT state /*= NULL*/)
   {
      IMAGELISTDRAWPARAMS   oDrawData;

      // Prepare
      ZeroMemory(&oDrawData, sizeof(IMAGELISTDRAWPARAMS));
      oDrawData.cbSize = sizeof(IMAGELISTDRAWPARAMS);

      // Centre icon within drawing rectangle
      CRect draw(rc.CenterPoint(), CSize(0,0));
      draw.InflateRect(sz.cx/2, sz.cy/2);

      // Set properties
      oDrawData.himl   = GetSafeHandle();
      oDrawData.i      = image;
      oDrawData.hdcDst = dc.m_hDC;
      oDrawData.x      = draw.left;
      oDrawData.y      = draw.top;
      oDrawData.fStyle = ILD_TRANSPARENT;

      // Disabled:
      if (state & ODS_DISABLED)
         oDrawData.fState  = ILS_SATURATE;
      
      // Selected:
      else if (state & ODS_SELECTED)
      {
         oDrawData.rgbFg   = CLR_DEFAULT;
         oDrawData.fStyle |= ILD_BLEND;
      }

      /// Draw icon
      return ImageList_DrawIndirect(&oDrawData);
   }
示例#2
0
/////////////////////////////////////////////////////////////////////////////
// Func. Name : CreateDIBSection
// Parameters :
// Return     :
// Remarks    :
//
void CDibBitmap::CreateDIBSection(CDC* dc,CDibPalette* pal,int xl,int yl,WORD nBitCount)
{ 
	m_nWidth = xl;
	m_nHeight = abs(yl);
	xl = xl + ((xl % 4) ? (4 - xl % 4) : 0);
	if(GetSafeHandle() && GetBitCount() == nBitCount && xl == GetWidth() && abs(yl) == GetHeight())
		return;
	LPBITMAPINFO bitmapInfo = (LPBITMAPINFO) new BYTE[sizeof(BITMAPINFOHEADER)+256*sizeof(DWORD)];
	BITMAPINFOHEADER header = { 40,640,-480,1,8,0,0,5904,5904,256,0 };
	header.biBitCount = nBitCount;
	header.biWidth  = xl;
	header.biHeight = -abs(yl);
	memcpy(bitmapInfo,&header,sizeof(header));
	memcpy(&m_infoHeader,&header,sizeof(header));
	LPRGBQUAD pRGB = (RGBQUAD*) ((LPBYTE)bitmapInfo + sizeof(BITMAPINFOHEADER));
	//if(pal)	pal->GetPaletteRGBQuad(0,256,pRGB);
	memset(pRGB,0,256*sizeof(RGBQUAD));
	Attach(::CreateDIBSection(dc->GetSafeHdc(),bitmapInfo,DIB_RGB_COLORS,(void**)&m_pData,NULL,0)); 
	safe_delete( bitmapInfo ); 
}
示例#3
0
BOOL CImageRegion::IsEmpty()
{
   return GetSafeHandle()==NULL;
}