?? tlines.cpp
字號:
#include "TLines.h"
static const int vRange = 12; //速度變化范圍
static const int scrwth=GetSystemMetrics(SM_CXFULLSCREEN); //窗口寬度
static const int scrhgt=GetSystemMetrics(SM_CYFULLSCREEN)+40;//窗口高度
void TLines::Draw(HWND hwnd) //畫線,整個程序寫的最關鍵函數(shù)
{
int i,j; //定義兩個計數(shù)器
HDC hdc; //Windows系統(tǒng)類型,窗口的設備環(huán)境
HPEN oldpen,newpen,ReverseNewPen; //Windows系統(tǒng)類型,畫筆
//獲取該窗口的設備環(huán)境
hdc=GetDC(hwnd);
newpen=CreatePen(PS_SOLID,1,RGB(color.nRed,color.nGreen,color.nBlue));
oldpen = (HPEN)SelectObject(hdc,newpen);
//先保存原來的點,畫出后NumOfPolygan組線時才擦畫
for (i=0;i<NumOfPoint;i++) {
for (j=NumOfPolygan-1;j>0;j--) {
pt[i].Oldx[j]=pt[i].Oldx[j-1];
pt[i].Oldy[j]=pt[i].Oldy[j-1];
}
pt[i].Oldx[0]=pt[i].x;
pt[i].Oldy[0]=pt[i].y;
}
//是否跑到屏幕外,反彈
for (i=0;i<NumOfPoint;i++) {
if (pt[i].x>=scrwth)
{ pt[i].vx=-rand()*vRange/RAND_MAX-1; ChangeColor(); }
else if (pt[i].x<=0)
{ pt[i].vx=rand()*vRange/RAND_MAX+1; ChangeColor(); }
if (pt[i].y>=scrhgt)
{ pt[i].vy=-rand()*vRange/RAND_MAX-1; ChangeColor(); }
else if (pt[i].y<=0)
{ pt[i].vy=rand()*vRange/RAND_MAX+1; ChangeColor(); }
pt[i].x=pt[i].x+pt[i].vx;
pt[i].y=pt[i].y+pt[i].vy;
}
//畫線
MoveToEx(hdc,pt[0].x,pt[0].y,NULL);
for (j=0;j<NumOfPoint-1;j++)
LineTo(hdc,pt[j+1].x,pt[j+1].y);
LineTo(hdc,pt[0].x,pt[0].y);
Sleep(7); //延遲0.007秒,控制速度!!!!
//擦去前NumOfPolygan的那條線
ReverseNewPen=CreatePen(PS_SOLID,1,RGB(0,0,0));
SelectObject(hdc,ReverseNewPen);
MoveToEx(hdc,pt[0].Oldx[NumOfPolygan-1],pt[0].Oldy[NumOfPolygan-1],NULL);
for (j=0;j<NumOfPoint-1;j++)
LineTo(hdc,pt[j+1].Oldx[NumOfPolygan-1],pt[j+1].Oldy[NumOfPolygan-1]);
LineTo(hdc,pt[0].Oldx[NumOfPolygan-1],pt[0].Oldy[NumOfPolygan-1]);
SelectObject(hdc,oldpen);
DeleteObject(newpen);
DeleteObject(ReverseNewPen);
ReleaseDC(hwnd,hdc); //釋放窗口的設備環(huán)境
}
void TLines::ChangeColor() //改變顏色
{
if (rand()*10/RAND_MAX == 5) { //平均頂點撞擊墻壁10次改變一次顏色
color.nRed = rand()*255/RAND_MAX;
color.nGreen = rand()*255/RAND_MAX;
color.nBlue = rand()*255/RAND_MAX;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -