Example #1
0
//-------------------------------------------------------------------------------------
HBITMAP CMainFrame::CVistaMenuIcon::QueryIcon (UINT nID)
{
    std::map<UINT, FCObjImage*>::iterator   i = m_tab.find(nID) ;
    if (i != m_tab.end())
        return *i->second ;

    FCObjImage   * pImg = new FCObjImage ;
    pImg->LoadResource (nID, L"PNG", IMG_PNG) ;
    if (pImg->IsValidImage() && (pImg->ColorBits() == 32))
    {
        pImg->ApplyEffect (FCEffectPremultipleAlpha()) ;
    }
    m_tab[nID] = pImg ;
    return *pImg ;
}
Example #2
0
//=================================================================================
// 画线基类/base class of drawline (32 bit)
void  CCmdImgDrawlineBase::Implement (FCObjImage & img, FCObjProgress * Percent)
{
	if (!img.IsValidImage() || (img.ColorBits() != 32))
		return ;
	m_nAlpha = FClamp0255 (m_nAlpha) ;

	// 制作大小一样的alpha位图,注意:位图数据初始化为0(也即黑色)
	FCObjImage		imgAlpha (img.Width(), img.Height(), 8) ;
	
	// draw lines
	
	this->DrawAlphaMask (imgAlpha) ;
	//imgAlpha.Save("D:\\a.bmp");
	// 制作纯色位图
	FCObjImage          imgCover (img.Width(), img.Height(), 32) ;
	FCPixelFillColor    cmdFillCr(m_cr) ;
	imgCover.SinglePixelProcessProc (cmdFillCr) ;
	
	imgCover.AppendAlphaChannel (imgAlpha) ;
	//imgCover.Save("D:\\te.bmp");
	img.CombineAlphaImg (imgCover) ;
	//img.Save("D:\\te.bmp");
}