关于双缓冲无法显示图片的有关问题
关于双缓冲无法显示图片的问题
首先加载一张图片
然后在OnPaint()事件中利用双缓冲绘制出来
但是图片并没有显示出来
但是如果我不用双缓冲,直接绘制出来就可以
后台缓冲区复制不到前台缓冲区,还是不能直接用DrawImage()函数绘制到后台缓冲区?
------解决方案--------------------
后台缓冲DC你没有给他关联CBitmap
它画在鸟地方啊
DC只是一支笔,CBitmap才是黑板
只有笔画个鸡巴画
------解决方案--------------------
BackDC.CreateCompatibleDC(NULL);
还的创建一个兼容位图(指定大小)
还得将兼容位图选入BackDC
------解决方案--------------------
在定义一个CBitmap给后台缓冲区,
给后台缓冲区创建兼容位图即:CreateCompatibleDC
给后台缓冲去选入位图,即: SelectObject
首先加载一张图片
Gdiplus::Bitmap * IMG = new Gdiplus::Bitmap(_T("C:/1.jpg"));
然后在OnPaint()事件中利用双缓冲绘制出来
CDC * FrontDC = GetDC(); // 前台缓冲区
CDC BackDC; // 后台缓冲区
BackDC.CreateCompatibleDC(NULL); // 建立后台缓冲区
Gdiplus::Graphics * g = Gdiplus::Graphics::FromHDC(BackDC.GetSafeHdc()); // 关联到后台缓冲区
g->DrawImage(IMG, 0, 0, 400, 400); // 绘制到后台缓冲区
FrontDC->BitBlt(0, 0, 400, 400, &BackDC, 0, 0, SRCCOPY); // 绘制到前台缓冲区
BackDC.DeleteDC();
但是图片并没有显示出来
但是如果我不用双缓冲,直接绘制出来就可以
CDC * FrontDC = GetDC();
Gdiplus::Graphics * g = Gdiplus::Graphics::FromHDC(FrontDC->GetSafeHdc());
g->DrawImage(IMG, 0, 0, 400, 400); // 直接绘制
后台缓冲区复制不到前台缓冲区,还是不能直接用DrawImage()函数绘制到后台缓冲区?
------解决方案--------------------
后台缓冲DC你没有给他关联CBitmap
它画在鸟地方啊
DC只是一支笔,CBitmap才是黑板
只有笔画个鸡巴画
------解决方案--------------------
BackDC.CreateCompatibleDC(NULL);
还的创建一个兼容位图(指定大小)
还得将兼容位图选入BackDC
------解决方案--------------------
在定义一个CBitmap给后台缓冲区,
给后台缓冲区创建兼容位图即:CreateCompatibleDC
给后台缓冲去选入位图,即: SelectObject