Re: [問題] 如何判斷滑鼠點到圖片的哪個區塊
看板C_and_CPP (C/C++)作者simonly0001 (Lifelong-Study)時間13年前 (2012/12/14 20:29)推噓4(4推 0噓 5→)留言9則, 4人參與討論串3/3 (看更多)
※ 引述《locklose (允)》之銘言:
: ※ 引述《simonly0001 (Lifelong-Study)》之銘言:
: : 開發語言 VC.Net
: : 是這樣的,小弟有一個畫面是用繪圖指令畫出一個時鐘,
: : 希望達到的功能是
: : 當使用者按一下滑鼠左鍵時,時針轉到使用者點的位置,點右鍵則是轉動分針
: : 目前卡在不知如何判斷使用者點到哪個區塊,
: : 圖片的啟始點(0, 0)在左上角,原心在時鐘中心(width >> 1, height >> 1)
: :
: step1 判斷你目前輸入是左鍵還右鍵(可查MSDN)
: step2 輸入的滑鼠座標是否在鐘的範圍內
: step3 以原點繪製水平/垂直線,座標點也如此
: 若時鐘均勻,水平垂直交叉點(點C)具有90度且完成直角三角
: 這時有邊a(滑鼠座標到點C),邊b(原點到點C),邊c(滑鼠座標到原點)
: 可利用arctan(a/b)得到角度,這樣你就能改變時針或分針角度
事情解決了,以下是部分代碼
#define PI 3.1415926545;
double centerX = 圓心座標X;
double centerY = 圓心座標Y;
double pointX = 滑鼠座標X - centerX;
double pointY = (滑鼠座標Y - centerY) * (-1.0);
double angel(角度) = atan2(PointX, PointY) * 180.0 / PI;
角度的基準線是正上方( 12點整 ),往右的角度為正,往左為負,
當角度為負時,加 360 就可以得到正的角度
angel = (angel < 0) ? angel + 360.0 : angel;
得到角度之後,後面就好處理了,所以就不貼代碼了,有需要的歡迎自由取用
另外請問一下,arctan 要 include 哪個標頭檔呢?
我用 Visual Studio 2010,編譯時提示找不到此函式
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.26.115.84
推
12/14 21:10, , 1F
12/14 21:10, 1F
→
12/14 21:11, , 2F
12/14 21:11, 2F
→
12/14 21:11, , 3F
12/14 21:11, 3F
→
12/14 21:52, , 4F
12/14 21:52, 4F
→
12/14 21:53, , 5F
12/14 21:53, 5F
推
12/14 22:27, , 6F
12/14 22:27, 6F
推
12/15 20:05, , 7F
12/15 20:05, 7F
→
12/15 22:01, , 8F
12/15 22:01, 8F
推
12/16 00:46, , 9F
12/16 00:46, 9F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章