- PR -

GDI+で描いた図形をImageオブジェクトに変換したいのですが

投稿者投稿内容
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2004-06-15 20:50
こんばんわ
GDI+のAddLineメソッドなどで描いた図形をImageオブジェクトに変換(?)したいのですが・・・。(VB.NET)
何故かというと、描画した図形をコントロールのBackgroundImageにしたいからです。
できれば、ピクチャーボックスに描いた図形をビットマップとして保存する方法もできれば知りたいです。
よろしくお願いします。

えムナウ
大ベテラン
会議室デビュー日: 2004/06/10
投稿数: 187
お住まい・勤務地: 東京
投稿日時: 2004-06-15 21:57
Dim newGraphics As Graphics = Graphics.FromImage(image)
でどうでしょうか?

もう一度書かなくてはいけませんね。


[ メッセージ編集済み 編集者: えムナウ 編集日時 2004-06-15 21:58 ]
えムナウ
大ベテラン
会議室デビュー日: 2004/06/10
投稿数: 187
お住まい・勤務地: 東京
投稿日時: 2004-06-15 22:02
>ピクチャーボックスに描いた図形をビットマップとして保存する方法
pictureBox.Image.Save(ファイル名)
でどうでしょうか?


[ メッセージ編集済み 編集者: えムナウ 編集日時 2004-06-15 22:04 ]
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2004-06-15 23:01
お返事おりがとうございます。
でもGraphicPathのAddLineやGraphicsのDrowLineなどで描いた図形はImageではないので、Image.Saveでは保存できないんですよ。
残念ながら。

えムナウ
大ベテラン
会議室デビュー日: 2004/06/10
投稿数: 187
お住まい・勤務地: 東京
投稿日時: 2004-06-16 00:30
>でもGraphicPathのAddLineやGraphicsのDrowLineなどで描いた図形はImageではないので、
>Image.Saveでは保存できないんですよ。
まずピクチャーボックスに描いた図形があるんですよね。これがまだないのですか?
ピクチャーボックスには Image プロパテイがあって、ピクチャーボックスにPaintメソッドなどで書いたGraphicPathのAddLineやGraphicsのDrowLine は Imageとして Image プロパテイで取得できると思いますが、それが出来ないのですか?
Image プロパテイで取得できるなら pictureBox.Image.Save(ファイル名) で保存できるはずです。

Bitmap(Image)に絵を描きたいなら
Dim image As New Bitmap(xサイズ,yサイズ)
Dim graphics As Graphics = Graphics.FromImage(image)
で graphics に対して絵を描けばいいと思います。

じいじ
大ベテラン
会議室デビュー日: 2003/11/11
投稿数: 223
投稿日時: 2004-06-16 08:22
えムナウさんの方法が定石と思っています。

Dim image As New Bitmap(xサイズ,yサイズ)
Dim graphics As Graphics = Graphics.FromImage(image)

これで、(言い方が変かもしれませんが)graphicオブジェクトに描画したものが、imageオブジェクトに変換されるので、

pictureBox.Image.Save

で保存できる。
ゆき
大ベテラン
会議室デビュー日: 2003/11/02
投稿数: 121
投稿日時: 2004-06-16 10:02
Dim iimage As New Bitmap(Me.Width, Me.Height)
Dim e As Graphics = Graphics.FromImage(iimage)
でeにLineなどを描いたらできました。
お二人ともありがとうございます。
先輩にはデバイスコンテキストを取るんだよと言われて、
昨晩デバイスコンテキストについて一生懸命調べていて、
GDI+ではデバイスコンテキストがないということを知って、
途方にくれていました。
助かりました。ありがとうございました。
uesan
会議室デビュー日: 2004/10/15
投稿数: 1
投稿日時: 2004-10-15 19:04
ピクチャーボックス(pbscreen)にdrawlineで下のようなプログラムで描画しましたが、ビットマップになっていないのか pbscreen.Image.Save("c:\aaa.bmp")でエラーが出ます。この場合、ピクチャボックスにビットマップイメージを持ってくるとそれだけは保存してくれます。
 ひろこさんがかかれていたような状態なのでしょうか。
どうすればこのラインを保存できるのでしょうか。


Dim g As System.Drawing.Graphics

Private pen As New System.Drawing.Pen(Color.Red)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
g.DrawLine(pen, 0, 0, 200, 200)
pbscreen.Image.Save("c:\aaa.bmp")
End Sub


Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
g = pbscreen.CreateGraphics()
End Sub

スキルアップ/キャリアアップ(JOB@IT)