小弟在做双缓冲绘图碰见了一些问题,请大侠指点。
我想用30×30的图片填充几个整个窗口。开始我写了一个显示图片的函数displaybmp
具体代码:
void premeau::displaybmp(HDC hdc,int x,int y,LPCTSTR IDB_name)
{
extern HINSTANCE hInst;
HINSTANCE hBmpInstance=hInst;
HBITMAP hBmp; //位图句柄
BITMAP Bmp; //BITMAP是结构体
HDC hDcMem;
hDcMem = CreateCompatibleDC(hdc); //创建兼容设备
hBmp = (HBITMAP)LoadImage(hBmpInstance,MAKEINTRESOURCE(IDB_name),IMAGE_BITMAP,300,200,LR_CREATEDIBSECTION);
GetObject(hBmp,sizeof(BITMAP),&Bmp); //获取位图尺寸
SelectObject(hDcMem,hBmp); //将位图加到设备中
BitBlt(hdc,x,y,Bmp.bmWidth,Bmp.bmHeight,hDcMem,0,0,SRCCOPY);
DeleteObject(hBmp); //清除位图
DeleteDC(hDcMem);
}
然后再WM_PAINT中用了双层循环
for(i=windowsre.left;i<=windowsre.right;i+=30)
{
for(j=windowsre.top;j<=windowsre.bottom;j+=30)
{
meaupre.displaybmp(hdc,i,j,MAKEINTRESOURCE(IDB_jiaotangdiben));
}
}
显示图片并不是整体出现,我想再用个临时的DC。
于是改成
HDC hDcMem;
hDcMem=CreateCompatibleDC(hdc);
for(i=windowsre.left;i<=windowsre.right;i+=30)
{
for(j=windowsre.top;j<=windowsre.bottom;j+=30)
{
meaupre.displaybmp(hDcMem,i,j,MAKEINTRESOURCE(IDB_jiaotangdiben));
}
}
BitBlt(hdc,0,0,800,800,hDcMem,0,0,SRCCOPY);
但是图片不能显示,为什么?
我想用30×30的图片填充几个整个窗口。开始我写了一个显示图片的函数displaybmp
具体代码:
void premeau::displaybmp(HDC hdc,int x,int y,LPCTSTR IDB_name)
{
extern HINSTANCE hInst;
HINSTANCE hBmpInstance=hInst;
HBITMAP hBmp; //位图句柄
BITMAP Bmp; //BITMAP是结构体
HDC hDcMem;
hDcMem = CreateCompatibleDC(hdc); //创建兼容设备
hBmp = (HBITMAP)LoadImage(hBmpInstance,MAKEINTRESOURCE(IDB_name),IMAGE_BITMAP,300,200,LR_CREATEDIBSECTION);
GetObject(hBmp,sizeof(BITMAP),&Bmp); //获取位图尺寸
SelectObject(hDcMem,hBmp); //将位图加到设备中
BitBlt(hdc,x,y,Bmp.bmWidth,Bmp.bmHeight,hDcMem,0,0,SRCCOPY);
DeleteObject(hBmp); //清除位图
DeleteDC(hDcMem);
}
然后再WM_PAINT中用了双层循环
for(i=windowsre.left;i<=windowsre.right;i+=30)
{
for(j=windowsre.top;j<=windowsre.bottom;j+=30)
{
meaupre.displaybmp(hdc,i,j,MAKEINTRESOURCE(IDB_jiaotangdiben));
}
}
显示图片并不是整体出现,我想再用个临时的DC。
于是改成
HDC hDcMem;
hDcMem=CreateCompatibleDC(hdc);
for(i=windowsre.left;i<=windowsre.right;i+=30)
{
for(j=windowsre.top;j<=windowsre.bottom;j+=30)
{
meaupre.displaybmp(hDcMem,i,j,MAKEINTRESOURCE(IDB_jiaotangdiben));
}
}
BitBlt(hdc,0,0,800,800,hDcMem,0,0,SRCCOPY);
但是图片不能显示,为什么?