void CBCStroke::Draw(FCObjImage& img,float zoompaper,float zoompress) { if(m_bezStroke.empty()) return; FCObjImage imgBlock; RECT rcTmp; rcTmp.bottom=m_rcSave.bottom*zoompaper; rcTmp.left=m_rcSave.left*zoompaper; rcTmp.right=m_rcSave.right*zoompaper; rcTmp.top=m_rcSave.top*zoompaper; img.GetSubBlock (&imgBlock,rcTmp); // if(m_Undo.IsValidImage()==false) // m_Undo=imgBlock; // 制作大小一样的alpha位图,注意:位图数据初始化为0(也即黑色) FCObjImage imgAlpha (imgBlock.Width(), imgBlock.Height(), 8) ; Draw(imgAlpha,255,zoompaper,zoompress); // 制作纯色位图 FCObjImage imgCover (imgBlock.Width(), imgBlock.Height(), 32) ; RGBQUAD c; c.rgbRed=GetRValue(m_c); c.rgbGreen=GetGValue(m_c); c.rgbBlue=GetBValue(m_c); FCPixelFillColor cmdFillCr(c) ; imgCover.SinglePixelProcessProc (cmdFillCr) ; imgCover.AppendAlphaChannel (imgAlpha) ; imgBlock.CombineAlphaImg (imgCover); img.CoverBlock(imgBlock,rcTmp.left,rcTmp.top); //std::sort( }
//================================================================================= // 画线基类/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"); }