none
用Graphic畫出來的圖,該如何直接貼入word裡呢? RRS feed

  • 問題

  •  

    如題…

    用grahpic畫出來的圖,要怎麼樣才可以直接開啟一個word並貼上去呢?

    有沒有辦法呢?

     

    感激!

    2007年3月29日 下午 08:35

解答

所有回覆

  • 你可以先看前面一些相關討論:

    http://forums.microsoft.com/MSDN-CHT/Search/Search.aspx?words=Word.Application&localechoice=31748&SiteID=14&searchscope=allforums

     

    不過我個人以為,在你的程式用選單或工具列提供複製功能,把圖片往剪貼簿送,讓使用者自行在其他軟體選擇貼上會比較好,你強制往 Word 送,除非是特定目的下,比如說大量程式自動化,否則我覺得這樣做反而不妥。

     

    此外,Graphics 畫出來的只有兩種,一種是向量檔 (EMF),一種是點陣檔,點陣檔你不特別處理的往 Word 送話,會採用預設 bitmap 格式,反而造成檔案肥大,這樣是否妥切?

    2007年3月30日 上午 12:49
    版主
  • 璉兄:

     

    我就知道您會回答我問題,記得許多久前上來發問(另外,vb小站好像也有),都經常會和到您的回覆,您真是個熱心的人…說來真不好意思,直到昨天,我才去看了一下您的部落格,發現,原來您是…男的,呵,題外話。

     

    嗯,其實,我不知道會有這樣的問題…我只是個業餘的程式設計者,我會這樣做,倒不是因為要大量自動化,主要是因為要把資料庫裡的文字及圖檔,送到word裡,因為,我的朋友只會用word,我就想如果可以直接送上去,就比較簡單一點,倒是沒考慮到效能的問題,因為並不是太大的程式,只是一個小小的算命整理系統。結合我另一邊發問的圖檔問題,總的就是我目前遇到的困難吧…

     

    先謝謝您的回覆,我會再研究看看的。

     

    感恩。

    2007年3月30日 上午 04:02
  • 關於暱稱與性別,這篇有提到一點點:

    http://tlcheng.spaces.live.com/blog/cns!145419920BFD55A7!1037.entry

    2007年3月31日 下午 04:34
    版主
  • 璉兄:

     

    呵,原來您這個都回…

     

    不過,既然您回了,我就不能孤負您的美意。

     

    我今天小研究了一下Metafile…

     

    好像,不能在上面寫字?是嗎?

    2007年3月31日 下午 10:57
  • 在你另外一篇有回阿,建立 Graphics 後,當然用 Graphics.DrawString 來寫字。

    GDI+ 只有包 API 裡面的 TextOut ,沒有包 DrawText ,所以更多的需求要自己去呼叫 API ,一般來說,DrawString 已經夠用了。

    另外那篇有引用

    回覆:關於繪圖  http://forums.microsoft.com/msdn-cht/ShowPost.aspx?PostID=1297399&SiteID=14

     

    這篇裡面的圖,至少座標軸都有標文字,當然可以加文字。

     

    使用 Graphics 時,不管是直接畫在 bitmap 還是 metafile ,都會受世界座標轉換影響,你自己看看,你是不是自己把座標定錯,畫到奇怪的位置了,metafile 不指定圖面範圍時,你所有畫的東西都會顯示在 emf 檔中,指定圖面範圍時才會裁剪。

     

    這篇:動態文字轉圖檔範例 http://tlcheng.spaces.live.com/blog/cns!145419920BFD55A7!397.entry

    跟試用位置:http://tlcheng.twbbs.org/aspx/Tools/Count/FontEnum.aspx

     

    裡面就有輸出為 emf 的範例,直接在 bitmap / emf 上寫文字,引用其中一段程式碼:


    Code Snippet


    Select Case LCase(strExtName)
       Case "emf", "wmf"
          Dim emf As New cMetaFile
          emf.CreatePictureGraphics()
          grfx = emf.MyCreateMetaFileGraphics()
          pic = emf
       Case Else
          bmp = New System.Drawing.Bitmap(boxWidth, boxHeight, System.Drawing.Imaging.PixelFormat.Format32bppPArgb)
          grfx = System.Drawing.Graphics.FromImage(bmp)
          pic = bmp
    End Select


    With grfx
       If Len(strBackgroundColor) > 0 Then
          .FillRectangle(bgColor, 0, 0, CSng(boxWidth), CSng(boxHeight))
       End If
       .DrawString(strNumber, axFont, axColor, ptf, strfmt)
       .Dispose()
    End With


    可看到 metafile / bmp 只是建立 Graphics 的來源不同,建立完成後,用同樣的 Graphics 填底色、畫字串,就完成文字轉圖檔了。

    2007年4月1日 上午 01:20
    版主
  • 璉兄:

     

    哦哦,真是太感謝您了…大概是因為雜事太多,晚上多睡不著。

    當了好多天的熊貓

    所以,沒有一時間沒有想到…metafile也是要建一個graphic。所以,可以直接用graphic.drawstring畫就好。

    真是糊塗了。

     

    太感謝了!!

     

    威憲

    2007年4月1日 上午 04:28