none
VB.net PictureBox 繪製文字在上面 RRS feed

  • 問題

  • 嗚嗚嗚~~~ 小弟最近遇到了麻煩,如下:

    小弟想要在一個 PictureBox 上繪製文字 ,但是爬文都只爬到VB6的程式碼,那麼VB6之後的版本要如何達到此效果?

     

    ※已試過使用VB6的程式碼 ,  VB2010會叫...


    有問題是好的開始,但是繼續錯誤下去則是失敗~ 小弟發問態度可能不太好,請包含,如果有,請告知小弟我,小弟會改進的。
    2010年10月3日 上午 11:46

解答

  • Hi!

    參考章立民老師 VB 2005 - 讀者詢問 DrawString 問題

     Private Sub btnBrushText_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles btnBrushText.Click
    
      Dim textSize As SizeF
      Dim g As Graphics
      Dim myBrush As Brush
      Dim myFont As New Font("Times New Roman", 50, FontStyle.Regular)
    
      ' 根據 PictureBox 控制項建立一個 Graphics 物件並清除其內容。
      g = PictureBox1.CreateGraphics()
      g.Clear(Color.White)
    
      ' 取得用來繪製文字的所需大小。
      textSize = g.MeasureString(TextBox1.Text, myFont)
    
      ' 建立一個使用者所選取之顏色的筆刷。我們之前已經將使用者
      ' 所選取的顏色指派給按鈕的前景色。
      myBrush = New SolidBrush(Me.btnSelectColor.ForeColor)
    
      ' 繪製文字。
      g.DrawString(TextBox1.Text, myFont, myBrush, _
          (PictureBox1.Width - textSize.Width) / 2, _
          (PictureBox1.Height - textSize.Height) / 2)
     End Sub
    

    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 Nick1996 2010年10月8日 上午 09:41
    2010年10月3日 下午 12:22
    版主
  • 我比較偏向記憶體繪圖,這樣不用再管 Paint 事件。

    http://social.msdn.microsoft.com/Search/zh-TW/?Refinement=112&query=%e8%a8%98%e6%86%b6%e9%ab%94%20DrawString


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 Nick1996 2010年10月8日 上午 09:41
    2010年10月3日 下午 12:41
  • 心冷大附的link中, 第二篇文章

            B = New Bitmap(PictureBox1.Width, PictureBox1.Height)
            G = Graphics.FromImage(B)

    這樣的寫法就是記憶體繪圖. 它先將圖畫在記憶體中的Bitmap類別執行個體中, 再顯示出來.

    第三篇也有相關解釋.

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 Nick1996 2010年10月8日 上午 09:41
    2010年10月5日 下午 12:13
    版主

所有回覆

  • Hi!

    參考章立民老師 VB 2005 - 讀者詢問 DrawString 問題

     Private Sub btnBrushText_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles btnBrushText.Click
    
      Dim textSize As SizeF
      Dim g As Graphics
      Dim myBrush As Brush
      Dim myFont As New Font("Times New Roman", 50, FontStyle.Regular)
    
      ' 根據 PictureBox 控制項建立一個 Graphics 物件並清除其內容。
      g = PictureBox1.CreateGraphics()
      g.Clear(Color.White)
    
      ' 取得用來繪製文字的所需大小。
      textSize = g.MeasureString(TextBox1.Text, myFont)
    
      ' 建立一個使用者所選取之顏色的筆刷。我們之前已經將使用者
      ' 所選取的顏色指派給按鈕的前景色。
      myBrush = New SolidBrush(Me.btnSelectColor.ForeColor)
    
      ' 繪製文字。
      g.DrawString(TextBox1.Text, myFont, myBrush, _
          (PictureBox1.Width - textSize.Width) / 2, _
          (PictureBox1.Height - textSize.Height) / 2)
     End Sub
    

    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 Nick1996 2010年10月8日 上午 09:41
    2010年10月3日 下午 12:22
    版主
  • 我比較偏向記憶體繪圖,這樣不用再管 Paint 事件。

    http://social.msdn.microsoft.com/Search/zh-TW/?Refinement=112&query=%e8%a8%98%e6%86%b6%e9%ab%94%20DrawString


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    • 已標示為解答 Nick1996 2010年10月8日 上午 09:41
    2010年10月3日 下午 12:41
  • 可以詳細說明一下什麼是 "記憶體繪圖" 嗎?

    謝謝.


    2010年10月5日 上午 11:50
  • 心冷大附的link中, 第二篇文章

            B = New Bitmap(PictureBox1.Width, PictureBox1.Height)
            G = Graphics.FromImage(B)

    這樣的寫法就是記憶體繪圖. 它先將圖畫在記憶體中的Bitmap類別執行個體中, 再顯示出來.

    第三篇也有相關解釋.

     


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 Nick1996 2010年10月8日 上午 09:41
    2010年10月5日 下午 12:13
    版主
  • 了解! 謝謝各位大大的幫助!
    2010年10月8日 上午 09:42