當前位置:編程學習大全網 - 編程語言 - 電腦編程高手請進!

電腦編程高手請進!

由於不知道妳使用的編程語言,講下大概的思路:

如果如圖所示,指針只有這8個位置,那麽最簡單的辦法就是分別制作,指針分別在8個不同位置的圖,然後響應鍵盤的方向鍵,根據方向鍵分別顯示不同的圖就可以了。

程序壹開始,先進行變量初始化,可以分別將8個圖載入內存(這樣可以加快響應速度),將圖顯示為表指針指向12點位置的圖(假設為圖序號為0),初始化當前圖的索引號為0。

當按下鍵盤左鍵、上鍵時,計算圖序號: 如果當前序號=0,圖序號 = 8-1,否則,圖序號=當前序號-1;

當按下鍵盤右鍵、下鍵時,計算圖序號: 如果當前序號=7,圖序號 = 0,否則,圖序號=當前序號+1;

計算出圖的序號後,將相應序號對應的圖顯示出來就可以了。

=====================

通常編寫時鐘的辦法,是分別制作:表盤、指針兩種圖。然後,弄個定時器,再響應定時器的事件,編寫代碼。

表盤不動,計算指針所處的位置,然後旋轉指針的圖就可以了。

以下是C++編寫的壹個時鐘的代碼關鍵代碼示例,供參考:

//獲取客戶區大小

RECT Rect;

GetClientRect(&Rect);

//計算橢圓位置

int CenterX=Rect.right/2;

int CenterY=Rect.bottom/2;

CTime Time=CTime::GetCurrentTime();

//取當前時間

CString str;

int i,x,y;

CSize size;//創建壹支黑色的筆

CPen Pen(PS_SOLID,5,RGB(0,0,0));

//選進設備表,保存原筆

CPen*Oldpen=pDC->SelectObject(&Pen);

//繪制鐘面橢圓

pDC->Ellipse(5,5,Rect.right-5,Rect.bottom-5);

//設置字體顏色為紅色

pDC->SetTextColor(RGB(255,0,0));

for(i=1;iGetTextExtent(str,str.GetLengh());

//計算時間點放置位置

Radians=(double)i*6.28/12.0;

x=CenterX-(size.cx/2)+(int)((double)(CenterX-0)*sin(Radians));

y=CenterY-(size.cy/2)-(int)((double()CenterY-20)*cos(Radians));

//繪制12個時間點(1-12)

pDC->TextOut(x,y,str);

}//計算時鐘指針的夾角

Radians=(double)Time.GetHour()+(double)Time.GetMinute()/60.0+(double)Time.GetSecond()/3600.0;

Radians*=6.28/12.0;

//創建時針指鐘畫筆

CPen HourPen(PS_SOLID,5,RGB(0,255,0));

pDC->SelectObject(&HourPen);

//繪制時鐘指針線

pDC->MoveTo(CenterX,CenterY);

pDC->LineTo(CenterX,(int)((doble)(CenterX/3)*sin(Radians)),CenterY-(int)((double)(CenterY/3)*cos(Radians)));

Radians=(double)Time.GetMinute()+(double)Time.GetSecond()/60.0;

Radians*=6.28/60.0;

//創建分鐘指針畫筆

CPen MinutePen(PS_SOLID,3,RGB(0,0,255));

pDC->SelectObject(&MinutePen);

//繪制分鐘指針線

pDC->MoveTo(CenterX,CenterY);

pDC->LineTo(CenterX+(int)((double)(CenterX*2/3)*sin(Radians)),CenterY-(int)((double)(CenterY*2/3)*cos(Radians)));

Radians=(double)Time.GetSecond();

  • 上一篇:個,十,百,千,萬都是數位對嗎
  • 下一篇:【200分】推薦英文歌
  • copyright 2024編程學習大全網