| | |
| | | ```mermaid |
| | | flowchart TD |
| | | Start([開始 GetSiteOMR]) --> Init[Result = 0] |
| | | Init --> CheckLoad{影像檔名不符且非空?} |
| | | Start([開始]) --> CheckFile{影像是否已載入?} |
| | | CheckFile -- 否 --> LoadImg[從檔案載入影像並清除緩衝線] |
| | | CheckFile -- 是 --> GetInfo[獲取影像 DPI 與寬高資訊] |
| | | |
| | | CheckLoad -- 是 --> LoadImg[載入影像 ImageScrollBox1.LoadFromFile] |
| | | LoadImg --> ClearBW[初始化黑白緩衝區 ClearLine] |
| | | ClearBW --> Redraw[重繪影像 ISB_BW.Redraw] |
| | | Redraw --> ProcessMsg[處理系統訊息 Application.ProcessMessages] |
| | | ProcessMsg --> CheckFileExist |
| | | |
| | | CheckLoad -- 否 --> CheckFileExist{ImageScrollBox1.FileName 非空?} |
| | | |
| | | CheckFileExist -- 是 --> GetInfo[獲取 DPI 與影像寬高] |
| | | GetInfo --> ConvRect[轉換 Site 字串為 OMRRect 矩陣\nCM_Str2Rect] |
| | | ConvRect --> LogDisp[記錄定位點與矩陣資訊到 Display1] |
| | | |
| | | LogDisp --> BoundaryL{Left < 0?} |
| | | BoundaryL -- 是 --> SetL[Left = 0] |
| | | BoundaryL -- 否 --> BoundaryT{Top < 0?} |
| | | SetL --> BoundaryT |
| | | |
| | | BoundaryT -- 是 --> SetT[Top = 0] |
| | | BoundaryT -- 否 --> BoundaryR{Right > Width?} |
| | | SetT --> BoundaryR |
| | | |
| | | BoundaryR -- 是 --> SetR[Right = Width] |
| | | BoundaryR -- 否 --> BoundaryB{Bottom > Height?} |
| | | SetR --> BoundaryB |
| | | |
| | | BoundaryB -- 是 --> SetB[Bottom = Height] |
| | | BoundaryB -- 否 --> CallOMR |
| | | SetB --> CallOMR |
| | | |
| | | CallOMR[呼叫 Get_OMR 執行辨識] --> SetResult[Result = 辨識結果] |
| | | SetResult --> End([結束]) |
| | | |
| | | CheckFileExist -- 否 --> End |
| | | LoadImg --> GetInfo |
| | | GetInfo --> CalcRect[將 Site 字串轉為座標矩陣, 並參考定位點位移] |
| | | CalcRect --> BoundCheck[限制座標不超出影像邊界] |
| | | BoundCheck --> GetOMR[呼叫 Get_OMR 執行辨識] |
| | | GetOMR --> ReturnResult[返回辨識結果] --> End([結束]) |
| | | ``` |