作者:
Litfal (Litfal)
2017-11-07 20:51:42※ 引述《AutoTea (自動茶)》之銘言:
: 想請教各位前輩,小弟目前有一個問題:
: (x1,y1)┌────────────┐(x2,y2)
: │ │
: │ .←(x,y) │
: │ │
: (x3,y3)└────────────┘(x4,y4)
: 目前判斷(x,y)是否於上面四方型的方法是採用:GraphicsPath.IsVisible
: x1 <-> x2 = width y1 <-> y2 =height
: width, heihgt 的範圍太大了(20000以上),往往判斷一符圖下來要10分鐘以上
: (跑width, heihgt loop),不知各位前輩有沒有什麼好方法,可以讓速度再快一點?
: 感謝
從你的程式碼看來,你是要對矩形"範圍外"做處理
那你只要跑四個迴圈就行了,不需要跑整張圖範圍,再去檢查是否在矩形中
(x1,y1)┌────────────┐(x2,y2)
│ │
│ │
│ │
(x3,y3)└────────────┘(x4,y4)
四個顏色各跑一次迴圈,迴圈內不用判斷是否再矩形內。
邊界控制請自己依需求處理。
順便一提,矩形內外判斷請用Rectangle.Contains,這個是很簡單的四個短路邏輯。
GraphicsPath.IsVisible則複雜得多。