我正在做一个使用Cairo将旧的Windows95MFC代码翻译成C++11的项目。由于我不熟悉MFC,我对原始程序中用于绘图的不同坐标空间感到困惑,并且很难找到解释这些函数的信息和示例。
这就是我所看到的。在代码中,似乎有一个新的CDC设备上下文正在使用CreateCompatibleDC创建。然后创建一个位图对象。然后使用SelectObject函数将该位图设置为新的设备上下文。据我所知,这是一个依赖于DDB设备的位图。
例如:
bmp_dc = new CDC();
bmp_dc->CreateCompatibleDC(NULL);
int num_bit
我是MFC的新手。现在我有以下问题:我在一个小窗口(如640*480)中显示了一张大尺寸的图片(如2000*2000)。难怪图片在不缩小的情况下无法完全显示出来。我知道如果图片可以放入窗口,我可以保存原始图片而不会丢失任何像素,但是,我现在不能这样做:
CClientDC SHDC(this); //"this" is a CMDIChildWnd derived class
CDC memDC;
CRect rect;
GetClientRect(&rect);
memDC.CreateCompatibleDC(&SHDC);
CBitmap bm;
int
我的MFC程序中有一个包含图像的WICBitmap。有没有办法将这个位图绘制到设备上下文中?
void DrawBitmap(IWICBitmapSource source, HDC targetDC, int X, int Y, int cx, int cy)
{
//source: The Bitmap to draw
//TargetDC: The HDC to draw onto (e.g. a printer or screen DC)
//X,Y: The location on the DC to draw the bitmap
}
我试图在视图中显示两幅相同图像的位图,如下所示,但它只显示了第一个位图。如果我注释掉第一个,那么另一个就会显示出来。
void CChildView::OnPaint()
{
// Load the bitmap
CBitmap BmpLady;
// Load the bitmap from the resource
BmpLady.LoadBitmap(IDB_MB);
CPaintDC dc(this); // device context for painting
// Create a memory device compatible with the