none
PictureBox上面畫好圖,想要存起來,卻不能存的問題 RRS feed

  • 問題

  • 各位老師好

    我在一個專案做一個PictureBox1上面放一個PictureBox2

    PictureBox1上面畫刻度,PictureBox2上面繪曲線

    現在圖畫好了

    我想要存起來

    可是卻出了問題

    狀況如下

     

    換另一種寫法變成;

     

    請問各位老師

    要怎麼做才能把圖片確實的存起來

     

    謝謝各位

    2007年8月24日 上午 09:11

解答

  • 存檔的話只要 PictureBox1 上的圖,直接呼叫:

    PictureBox1.Image.Save(filename)

     

    不過存檔前要確定你繪圖動作已經關閉。

     

    我自己通常反過來,基於效能的考量,我不在 picturebox 上畫圖,而是在記憶體中畫完後,直接提供給 PictureBox1.Image 來顯示,我大部分是畫成 emf ,就可以隨意縮放不用重繪。

     

    例如下圖左側的工具列是控制我的圖層啟閉,最上面的是座標軸格線,我是在記憶體畫完後,一起展示,所以存檔時就能直接存在一起,或是關閉不顯示:

     

    螢幕擷圖是針對可是範圍來處理,要取的該範圍的 hWnd 後,針對 hWnd 處理,你確認你取得正確的 hWnd 嗎?

    2007年8月30日 上午 06:00
    版主
  • 線上手冊有啊~

    PictureBox.Handle 。

    2007年8月30日 上午 06:14
    版主

所有回覆

  • 用 Graphics.DrawImage 畫到同一張圖上去。

    2007年8月24日 下午 02:41
    版主
  •  

    請問璉大

    可否在進一步的說明?

    我用

    Dim bmp as Bitmap

    bmp = new Bitmap(PictureBox1.Image)

    bmp.save("C:\Test.jpg")

    這樣子他說我的PictureBox1.Image沒東西是Null

    請問我該怎麼做呢?

    是不是有點類似螢幕抓圖那樣

    只是抓的範圍是PictureBox1上的

     

    謝謝

    2007年8月30日 上午 03:06
  • ...?

    你看過 DrawImage 的線上手冊說明嗎?

    把一張圖畫到另一張圖是 DrawImage 的功用,跟螢幕擷圖有啥關係?

     

    你要用螢幕擷圖的話,這邊有個現成的函數可以參考:

    http://tlcheng.twbbs.org/TLCheng/Net/NetList.aspx?Action=Function&Module=25&Function=202

    2007年8月30日 上午 05:00
    版主
  • 璉大

    如果我單純要抓取PictureBox1上面的截圖

    那該怎麼做呢

    你的函式我改了很久還是沒辦法只抓PictureBox範圍的影像

    抱歉了.能不能給點答案

    謝謝

    2007年8月30日 上午 05:41
  • 存檔的話只要 PictureBox1 上的圖,直接呼叫:

    PictureBox1.Image.Save(filename)

     

    不過存檔前要確定你繪圖動作已經關閉。

     

    我自己通常反過來,基於效能的考量,我不在 picturebox 上畫圖,而是在記憶體中畫完後,直接提供給 PictureBox1.Image 來顯示,我大部分是畫成 emf ,就可以隨意縮放不用重繪。

     

    例如下圖左側的工具列是控制我的圖層啟閉,最上面的是座標軸格線,我是在記憶體畫完後,一起展示,所以存檔時就能直接存在一起,或是關閉不顯示:

     

    螢幕擷圖是針對可是範圍來處理,要取的該範圍的 hWnd 後,針對 hWnd 處理,你確認你取得正確的 hWnd 嗎?

    2007年8月30日 上午 06:00
    版主
  • 謝謝璉大

    不過我的圖是PictureBox1上面再疊一個PictureBox2

    如果我直接

    PictureBox1.Image.Save("C:\123.bmp")

    他會只有PictureBox1上面的圖,而且背景都會不見,當然PictureBox2那個地方就像被挖空一下

     

    所以我才想要用截圖的方式,把PictureBox1範圍的影像擷取下來

     

     

    你說到截圖必須取得PictureBox1範圍的hWnd,我可否在進一步問該怎麼取得PictureBox1範圍的hWnd ??

     

    謝謝,感激不盡

    2007年8月30日 上午 06:08
  • 線上手冊有啊~

    PictureBox.Handle 。

    2007年8月30日 上午 06:14
    版主
  • 謝謝璉大

    問題解決了

    感激

     

    2007年8月30日 上午 07:46
  • 剛剛在翻線上手冊時,在 .Net CF 中有一篇記憶體繪圖的範例用在 OnPaint 事件中,我補了一點心得放在 VB 版公告的這篇內,可以點進去看:

    關於VB2005資源分享

     

    2007年9月5日 上午 08:57
    版主
  •  

    您好:

     

    程式中,想將Yahoo! Widgets的畫面抓下,要用什麼方法?

    若前景有其它視窗遮住時,又該怎麼辦呢?

    可否勞您賜教。

    2007年10月19日 上午 06:26
  • 沒在用,不知道...

    2007年10月19日 上午 07:51
    版主