51代码网ORACLEMYSQLSQL SERVER其它数据库java/jspasp/asp.netC/C++/VC++APP应用其它语言服务器应用
您现在的位置: 51代码网 >> C >> 文章正文

贪吃蛇食物绘制不出来

更新时间:2012-3-29:  来源:51代码网

BOOL FoodCreate()

 
   static int j,i;
   RECT Rect;
   if(Food==FALSE)
   {j=rand()%20;
   i=rand()%20;}
   Rect.left=j*30;
   Rect.top=i*30;
   Rect.right=(j+1)*30;
   Rect.bottom=(i+1)*30;
   HDC hdc;
   PAINTSTRUCT ps;                          //定义指向包含绘图信息的结构体变量
   HBRUSH hBrush;                           //定义指向画刷的句柄
   HPEN hPen;                               //定义指向画笔的句柄
  
   hdc=BeginPaint(hWndMain,&ps);                //开始绘图
   hPen=(HPEN)GetStockObject(NULL_PEN);     //获取系统定义的空画笔
   SelectObject(hdc,hPen);
     hBrush=CreateSolidBrush(RGB(255,0,0));                    //创建画刷
      SelectObject(hdc,hBrush);                                 //选择画刷
      Rectangle(hdc,j*30,i*30,(j+1)*30,(i+1)*30);

   
   DeleteObject(hBrush);                                     //删除画刷
   DeleteObject(hPen);                //删除画笔
   EndPaint(hWndMain,&ps);            //结束绘图
   Food=TRUE;
   InvalidateRect(hWndMain,NULL,TRUE);
  // PostMessage(hWndMain,WM_PAINT,NULL,NULL);
    return 0;
}

Rectangle(hdc,0,0,30,30);//如果这句画出来了
Rectangle(hdc,j*30,i*30,(j+1)*30,(i+1)*30);//这句没画出来,检查一下坐标,是否画到窗口外面了。
你应该弄到 WM_PAINT 里面去绘制,在 FoodCreate 里面绘制的话,你一调用 InvalidateRect, 系统就会调用 WM_PAINT, 然后你在这儿绘制的东西自然就没了!

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 赞助商链接
    推荐文章
  • 此栏目下没有推荐文章
  • {
    设为首页 | 加入收藏 | 友情链接 | 网站地图 | 联系站长 |