windows api在线等候高手!问题解决,就给分,分只给一个人!
void daima(){
srand((unsigned)time(NULL));
buttom[0][0]=rand() % 15 + 1;//此方法很巧妙的把值规定为1-->15.
int m,n;
for( m=0;m<4;m++){
for( n=0;n<4;n++){
if(buttom[m][n]==0)
buttom[m][n]=(buttom[0][0]++)%16;
}
}
buttom[0][0]=buttom[0][0]-16;
zhdc=GetDC(zhwnd);
HDC hqie=CreateCompatibleDC(NULL);
HDC hzhongjian=CreateCompatibleDC(NULL);
HBITMAP qiedetu=(HBITMAP)LoadImage(zhInstance,MAKEINTRESOURCE(IDB_BITMAP8),IMAGE_BITMAP,600,600,LR_DEFAULTCOLOR);
SelectObject(zhdc,qiedetu);
SelectObject(hzhongjian,qiedetu);
SelectObject(hqie,qiedetu);
int h=0,l=0;
for( m=0;m<4;m++){
for( n=0;n<4;n++){
l=(buttom[m][n]%4)*150;
h=(buttom[m][n]/4)*150;
switch(buttom[m][n])
{
case 0:BitBlt(hzhongjian,m*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 1:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 2:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 3:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 4:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 5:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 6:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 7:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 8:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 9:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 10:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 11:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 12:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 13:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 14:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
case 15:BitBlt(hzhongjian,n*150,m*150,150,150,hqie,l,h,SRCCOPY);break;
}
}
}
BitBlt(zhdc,0,0,600,600,hzhongjian,0,0,SRCCOPY);
DeleteObject(qiedetu);
DeleteDC(hqie);
DeleteDC(hzhongjian);
ReleaseDC(zhwnd,zhdc);
return;
这是一个把一张图片打乱成16块,再重新组合的程序。
为什么显示出来的图片没有一点打乱的样子?即:为什么没有得到重组的图片?
[解决办法]
给你改了改。
‘洗牌’buttom 初始化还有问题,但可以显示。
#define SQUARE_SIZE 100int buttom[4][4] = {{15,14,13,12},{11,10,9,8},{7,6,5,4},{3,2,1,0}};HWND zhwnd;void daima(){// init index bug ,???? srand((unsigned)time(NULL)); buttom[0][0]=rand() % 15 + 1; int m,n; for( m=0;m<4;m++) { for( n=0;n<4;n++) { if(buttom[m][n]==0) buttom[m][n]=(buttom[0][0]++) % 16; } } buttom[0][0]=buttom[0][0]-16;// get dc HDC zhdc=GetDC(zhwnd);// create empty bmp HDC hzhongjian=CreateCompatibleDC(zhdc); HBITMAP membitmap=CreateCompatibleBitmap(zhdc,500,400); HBITMAP old=(HBITMAP)SelectObject(hzhongjian,membitmap);// create mem bmp HBITMAP qiedetu=(HBITMAP)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP8),IMAGE_BITMAP,600,600,LR_DEFAULTCOLOR); HDC hqie=CreateCompatibleDC(zhdc); HBITMAP old1=(HBITMAP)SelectObject(hqie,qiedetu);// int h=0,l=0; for( m=0;m<4;m++) { for( n=0;n<4;n++) { l=(buttom[m][n]%4)*SQUARE_SIZE; h=(buttom[m][n]/4)*SQUARE_SIZE; switch(buttom[m][n]) { case 0:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 1:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 2:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 3:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 4:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 5:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 6:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 7:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 8:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 9:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 10:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 11:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 12:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 13:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 14:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; case 15:BitBlt(hzhongjian,n*SQUARE_SIZE,m*SQUARE_SIZE,SQUARE_SIZE,SQUARE_SIZE,hqie,l,h,SRCCOPY);break; } } }// copy to dc BitBlt(zhdc,0,0,500,400,hzhongjian,0,0,SRCCOPY);// reset SelectObject(hqie,old1); SelectObject(hzhongjian,old);// free DeleteObject(qiedetu); DeleteDC(hqie); DeleteDC(hzhongjian); ReleaseDC(zhwnd,zhdc); return;}