VC++游戏编程基础(书)<1>

来源:互联网 发布:ubuntu挂载硬盘到data 编辑:程序博客网 时间:2024/04/30 23:12

1.1

画矩形,和线

winAPI

想用7种不同样式的画笔画线,然后利用画矩形函数画出一个封闭的矩形,并用6种不同的样式的画刷填色

关键代码

 

全局变量:

HPEN hPen[7];//添加全局变量
HBRUSH hBru[7];//添加全局变量// current instance
int sPen[7]={PS_SOLID,PS_DASH,PS_DOT,PS_DASHDOT,PS_DASHDOTDOT,PS_NULL,PS_INSIDEFRAME};//画笔样式
int sBru[6]={HS_VERTICAL,HS_HORIZONTAL,HS_CROSS,HS_DIAGCROSS,HS_FDIAGONAL,HS_BDIAGONAL};//画刷样式

 

 

初始化部分自己填写的代码:

for(i=0;i<=6;i++)
  {
  hPen[i]=CreatePen(sPen[i],1,RGB(255,0,0));
  if(i==6)
  {
   hBru[i]=CreateSolidBrush(RGB(0,255,0));
  }
  else
  {
   hBru[i]=CreateHatchBrush(sBru[i],RGB(0,255,0));
  }
   }

   MoveWindow(hWnd,10,10,650,350,true);

画图函数:

void  MyPaint(HDC hdc)
{
 int i;
 int x1=0;
 int x2=0;
 int y=0;
 for (i=0;i<=6;i++)
 {
  y=(i+1)*30;
  SelectObject(hdc,hPen[i]);
  MoveToEx(hdc,30,y,NULL);
  LineTo(hdc,100,y);
 }
 x1=120;
 x2=180;
 for (i=0;i<=6;i++)
 {
  SelectObject(hdc,hBru[i]);
  Rectangle(hdc,x1,30,x2,y);
  x1+=70;
  x2+=70;
 }

}

重绘时操作系统回调函数进行消息处理的部分

 case WM_PAINT:
   hdc = BeginPaint(hWnd, &ps);
   // TODO: Add any drawing code here...
   //RECT rt;
   //GetClientRect(hWnd, &rt);
   //DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);
   hdc=GetDC(hWnd);
   MyPaint(hdc);
   ReleaseDC(hWnd,hdc);
   
   break;

原创粉丝点击