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( }
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { FCObjImage imgAlpha ; FCWin32::LoadImageRes(imgAlpha, MAKEINTRESOURCE(IDR_RGNIMG), TEXT("TGA"), IMG_TGA) ; imgAlpha.SinglePixelProcessProc (FCPixelConvertTo8BitGray()) ; img.Create (imgAlpha.Width(), imgAlpha.Height(), 32) ; img.AppendAlphaChannel (imgAlpha) ; // TODO: Place code here. MSG msg; HACCEL hAccelTable; // Initialize global strings LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); LoadString(hInstance, IDC_MY003, szWindowClass, MAX_LOADSTRING); MyRegisterClass(hInstance); // Perform application initialization: if (!InitInstance (hInstance, nCmdShow)) { return FALSE; } hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_MY003); // Main message loop: while (GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); DispatchMessage(&msg); } } return msg.wParam; }
//================================================================================= // 画线基类/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"); }