我如何绘制一个OCX (我有源)到一个CBitmap对象或类似的东西?
背景:我的客户端创建PDF文档,这些文档的一部分是OCX的输出。PDF接口有一种将图像从CBitmap对象放置到PDF页面的方法。所以我想做的是让程序创建一个CBitmap对象,把它传递给OCX,让它把它的内容画在上面,然后把he CBitmap传递给PDF-库,把它放到文档中。因此,主要的问题是:如何将我的ocx绘制成CBitmap对象?
我使用的是视觉C++,视窗,MFC/ATL。非常感谢
发布于 2019-06-03 07:35:02
实际上,我没有设法将OXC呈现给一个CBitmap (刚刚绘制了一个黑匣子),但是将其呈现为一个ATL::CImage并从中生成一个CBitmap是有效的:
ATL::CImage* CPrnBasePrinter::DrawBeamerToImage(CSPCListView* pListViewWithBeamer, const CRect& rect4Beamer)
{
ASSERT(pListViewWithBeamer != nullptr);
auto* pRetVal = new CImage();
pRetVal->Create(rect4Beamer.Width(), rect4Beamer.Height(), 24);
HDC hdcImage = pRetVal->GetDC();
//Draw Control to CImage
pListViewWithBeamer->DrawBeamerToDC(HandleToLong(hdcImage),
rect4Beamer.left, rect4Beamer.top, rect4Beamer.right, rect4Beamer.bottom);
pRetVal->ReleaseDC();
return pRetVal;
}
void CPrnBasePrinter::DrawImageFromCImage(
const ATL::CImage* pImage, const CRect& rect) const
{
CBitmap* pbmp2Print = CBitmap::FromHandle(*pImage);
// Get the size of the bitmap
BITMAP bmpInfo;
pbmp2Print->GetBitmap(&bmpInfo);
//virtual - Draws the CBitmap to an Printer-DC or a PDF-Document
DrawImageFromLoadedBitmap(pbmp2Print, &bmpInfo, rect);
}
void CPrnBasePrinter::Draw()
{
//m_pListviewDataSource is an OCX capable of drawing itself into a given DC
ATL::CImage* pBeamerImage = DrawBeamerToImage(m_pListviewDataSource, CRect(0, 0, 100, 50));
if (pBeamerImage != nullptr){
DrawImageFromCImage(pBeamerImage, CRect(0, 0, 100, 50));
delete pBeamerImage;
}
}https://stackoverflow.com/questions/56343625
复制相似问题