none
請教關於在picturebox中框選範圍的問題 (vb2005新手) RRS feed

  • 問題

  • 想請教各位前輩

    如何在picturebox中做到像小畫家那種框選範圍的功能呢?

    我現在有做出來的像下圖這樣

    http://home.anet.net.tw/ghostzer/pic/testp1.jpg

    不過我所框出來的方框沒辦法消失 (就是框第2次時 第1個框就不見的那種樣子)

    所以越框   框框就越多@@

    還有就是不知道拉框框時的拖曳效果要怎麼寫

    第一次接觸vb 語法還不是很了解 

    麻煩先進們能指點一下 <(_ _)>

     

    (我使用的是 vb2005)

    2006年9月11日 上午 06:21

解答

  • 沒看到你打算在哪邊移除框線。

    你已經畫在圖上,所以在 bmp1 這個變數內已經包含框線,最簡單的移除框線方法是重新載入原始圖檔。

    若是你要做 Undo 之類的功能,建議你考慮改用 EMF ,不然你就要在美一步驟建立緩衝區來儲存畫面。

    2006年9月11日 上午 11:50
    版主

所有回覆

  • 你如何實作?

    通常比較懶的話,可能用 label ,背景色設透明,框線設定為你要樣式與顏色,當執行框選動作時,讓 label 顯示出來,不用的時候讓它不顯示。

    2006年9月11日 上午 07:40
    版主
  • 我是用New Bitmap

    然後在滑鼠事件中加進DrawRectangle的

    Dim bmp1 As New Bitmap("00672.jpg")
    Dim bluepen As New Pen(Color.Blue)
    Dim gl As Graphics

    ..........

    ....

    Private Sub Picture1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Picture1.MouseUp
            
            gl = Graphics.FromImage(bmp1)
            Dim pn1 As New Pen(Color.Blue)
            x3 = e.X
            y3 = e.Y
            px = x3 - x1
            py = y3 - y1
            gl.DrawRectangle(pn1, x1, y1, px, py)
            Label3.Text = "結束位置: (" & x3 & "," & y3 & ")"
            Picture1.Image = bmp1
            Picture1.Refresh()

    2006年9月11日 上午 08:16
  • 沒看到你打算在哪邊移除框線。

    你已經畫在圖上,所以在 bmp1 這個變數內已經包含框線,最簡單的移除框線方法是重新載入原始圖檔。

    若是你要做 Undo 之類的功能,建議你考慮改用 EMF ,不然你就要在美一步驟建立緩衝區來儲存畫面。

    2006年9月11日 上午 11:50
    版主