close
  • Creating Various Types of Image ROIs by Drawing Lines, Rectangles or Eclipses


  • 先前研究

  • C# 在PictureBox 畫線: 虛線, 點線, 點虛線

  • 目前可以做到

  • 1. 透過滑鼠兩點(button down and button up), 任意拉出一條 實線/虛線/點線 { L_i } where i=1,2,..,N

  • 2. 線段可以設定粗細,顏色

  • 3. 可以點選任意一組線段L_i, 進行整條線段拖拉動作

  • 3. 可以修改任意一組L_i線段的標籤位置

  • 4. 可刪除任意一組L_i

  • -----------------------------------------------------------------------------------

接下來, 想要做到以下新增功能:

1. 線段/ 矩形/ 圓形, 這三種都可以透過滑鼠兩點(button down and button up)來繪製

1.1 線段: 起點, 終點, 這兩個端點皆以正方形結尾, 方便之後用滑鼠拖拉修改長度

1.2 矩形: 左上角點, 右下角點 

矩形邊上有八個控制點

image

1.3 圓形(橢圓形): 最小包覆圓的矩形之左上角點, 右下角點

-----------------------------------------------------------------------------------

2 移動物件

定義物件拖拉狀態 DragHandle,

其中NoHandle未點選, Inside 在矩形範圍內, OnLine在線上

public enum DragHandle
{
     NoHandle = 0,
     Inside = 1,
     North = 2,
     East = 3,
     South = 4,
     West = 5,
     NorthWest = 6,
     SouthWest = 7,
     NorthEast = 8,
     SouthEast = 9,
     OnLine = 10
}

2.1 移動線段: 當滑鼠移動時, 停在線上但不在端點(起點或終點), 滑鼠變成十字箭頭表示可移動

image

滑鼠變成手勢表示移動中

image

2.2 移動矩形: 當滑鼠停在矩形邊上, 但不在8個端點上時(東西南北和左上/右上/左下/右下), 滑鼠變成十字箭頭表示可移動

image

2.3 移動圓形: 當滑鼠停在圓形邊上, 但不在8個端點上時(東西南北和左上/右上/左下/右下), 滑鼠變成十字箭頭表示可移動

image

-----------------------------------------------------------------------------------

3. 修改尺寸功能

3.1 線段: 當滑鼠在端點(起點或終點), 若靠近起點, 則以目前滑鼠位置變化量去更新起點; 反之更新終點

image

3.2 矩形: 8方位的點定義如下

image

當滑鼠在東方向點, 以滑鼠變化量更新紅色圈圈座標

image

當滑鼠在西方向點, 以滑鼠變化量更新紅色圈圈座標

image

當滑鼠在北方向點, 以滑鼠變化量更新紅色圈圈座標

image

當滑鼠在南方向點, 以滑鼠變化量更新紅色圈圈座標

image

當滑鼠在右上角點, 以滑鼠變化量更新紅色圈圈座標

image

調整大小時須注意

1  左邊和右邊上的端點不可以互相交換

2. 上面和下面的端點亦不可以交換

3. 一旦左邊和右邊上的端點重疊, 允許往左拖拉(左邊上的點)

4. 一旦上面和下面邊線的端點重疊, 允許往上托拉(上面邊線上的點)

-----------------------------------------------------------------------------------

下圖有上下圖層概念, 目前不打算加入這功能

註: 有圖層有個好處, 檢查滑鼠在圖形內, 可以從最上層開始檢查,

一旦符合就可以跳開, 不用檢查全部物件


image

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 me1237guy 的頭像
    me1237guy

    天天向上

    me1237guy 發表在 痞客邦 留言(0) 人氣()