none
picturebox 儲存 疑問? RRS feed

  • 問題

  • 請問在picturebox上,放label 該如何把 label上顯示的字一起存到 圖片裡?

    大概類似於 小畫家 上的文字方塊

    或者

    有類似截圖的也可以…



    2009年9月16日 上午 11:23

解答

  • 我看不太懂你的邏輯是什麼;你可以用一個bitmap之後把圖跟字都畫在上面然後儲存,例如下面這樣
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim bmp As New Bitmap(PictureBox1.Width, PictureBox1.Height)
            Dim g As Graphics = Graphics.FromImage(bmp)
            g.DrawImage(PictureBox1.Image, 0, 0)
            g.DrawString(Label1.Text, Label1.Font, New SolidBrush(Label1.ForeColor), 10, 10)
            g.Dispose()
            bmp.Save("filename here", Imaging.ImageFormat.Jpeg)
        End Sub
    或是取得picturebox的圖之後直接把字畫在picturebox上都可以,看你需不需要preview。
    提問時請清楚描述問題、留意應有禮節;嚴禁一行文、注音文 blog : http://www.dotblogs.com.tw/bauann/
    • 已編輯 bauannModerator 2009年9月17日 下午 12:13 修正錯字
    • 已標示為解答 怨念 2009年9月17日 下午 12:39
    2009年9月17日 下午 12:13
    版主

所有回覆

  • Developing with an Enhanced PictureBox

    這個很久以前的元件,還能用嗎...
    2009年9月16日 下午 02:46
  • ?
    存檔的時候先取得picturebox的圖,用graphic的相關方法(例如DrawString),把label的文字畫上去,之後再儲存新的圖就可以了
    提問時請清楚描述問題、留意應有禮節;嚴禁一行文、注音文 blog : http://www.dotblogs.com.tw/bauann/
    2009年9月16日 下午 04:11
    版主
  • 我看不太懂你的邏輯是什麼;你可以用一個bitmap之後把圖跟字都畫在上面然後儲存,例如下面這樣
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim bmp As New Bitmap(PictureBox1.Width, PictureBox1.Height)
            Dim g As Graphics = Graphics.FromImage(bmp)
            g.DrawImage(PictureBox1.Image, 0, 0)
            g.DrawString(Label1.Text, Label1.Font, New SolidBrush(Label1.ForeColor), 10, 10)
            g.Dispose()
            bmp.Save("filename here", Imaging.ImageFormat.Jpeg)
        End Sub
    或是取得picturebox的圖之後直接把字畫在picturebox上都可以,看你需不需要preview。
    提問時請清楚描述問題、留意應有禮節;嚴禁一行文、注音文 blog : http://www.dotblogs.com.tw/bauann/
    • 已編輯 bauannModerator 2009年9月17日 下午 12:13 修正錯字
    • 已標示為解答 怨念 2009年9月17日 下午 12:39
    2009年9月17日 下午 12:13
    版主
  • 恩,已經解決了感謝。
    2009年9月17日 下午 12:39
  • 請問bauann大大~

    那如果我要回復上一步,有這功能嗎??

    還是說我要每作一個動作,就存一張,才可以實現回復上一步的功能


    IDS
    2011年5月4日 上午 04:45
  • 請問bauann大大~

    那如果我要回復上一步,有這功能嗎??

    還是說我要每作一個動作,就存一張,才可以實現回復上一步的功能


    IDS
    Hi, 預設是沒有回覆上一步的功能;如果都是在底圖上面東西的話,可以用類似堆疊的方式去把畫的東西儲存起來,然後實作上一步的功能就要自己來了
    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守
    2011年5月5日 上午 02:27
    版主
  • Dear bauann大大

    再跟您請教幾個問題

    1.你說的堆疊的方式是不是SAVE與restore的方式??

        http://msdn.microsoft.com/en-us/library/system.drawing.graphics.save.aspx

        但是這範例,我畫面上看不出回復了什麼!! 還是我會錯意了?!!

    2.如果我的picturebox.image=null,意思就是沒有底圖,那我drowString會存不起來,那我除了先製作好一張空白底圖讀進去之外,還有別的辦法嗎??


    IDS
    2011年5月5日 上午 02:41
  • Hi,

    我是想說,假設畫的都是字的話,例如用List(of string)去存畫上去的東西,像是字、座標、顏色等等的資訊,也可以自訂類別來儲存這些相關的資訊,上一步、下一步就看你要拉多少東西出來畫了;而預設底圖的部分你可以用一張白底的圖,或是說去new一個bitmap出來都可以,new bitmap的話畫完之後再去指定給Picturebox就可以了


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守
    2011年5月5日 上午 04:42
    版主
  • dear bauann~ 感謝您的回覆,我知道我該怎樣做了,感恩
    IDS
    2011年5月5日 上午 07:44