SDK 绘图

来源:互联网 发布:程序员的好书 编辑:程序博客网 时间:2024/06/08 15:54
小弟在做双缓冲绘图碰见了一些问题,请大侠指点。
我想用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);
但是图片不能显示,为什么?

0 0