プロが教えるわが家の防犯対策術!

Vb.net2005での画像の合成方法がいろいろ探してみましたがよくわかりません

具体的には

a.bmpとそれより小さいb.bmpを二枚の画像を1枚に合成したいのです

いいお知恵をお貸しください

A 回答 (3件)

ごめんなさい m(__)m ちょっと勘違いしていました


下記のコードをお試しください

dim img1 as new Bitmap( PictureBox1.Image.Clone)
dim g as Graphics = Graphics.FromImage( img1 )
dim img2 as new Bitmap("C:\b.bmp")
g.drawImage( img2 10, 10 )
img1.save("test.bmp", Imaging.ImageFormat.bmp)
img2.dispose()
g.Dispose()
img1.Dispose()

グラフィックをイメージから作らないといけませんでした orz
    • good
    • 0
この回答へのお礼

ありがとうございます
記載して実行するとしっかりと合成されておりました

画像の取り扱いは難しいものですね
MSDNでもサンプルがあまりなくよく理解できませんでした

やっと肩の荷が下りました

お礼日時:2007/11/01 17:05

先の回答はただ画面に表示するだけのコードです


ピクチャーボックスをリフレッシュしてしまうと b.bmpは消えてしまいます

保存までしたいのであればメモリー上でGraphicsオブジェクトへ描画してやる必要があります

Dim g as Graphics = PictureBox1.CreateGraphics()
dim img1 as Image = PictureBox.Image.Clone
dim img2 as new Bitmap("b.bmp")
g.DrawImage(img1, 0, 0, img.width, img.Height)
g.DrawImage(img2, 10, 10 )
img1.save("test.bmp", Imageing.ImageFormat.bmp )
img2.dispose()
g.Dispose()

と言った具合です

この回答への補足

Dim g As Graphics = PictureBox1.CreateGraphics()
Dim img1 As Image = PictureBox1.Image.Clone
Dim img2 As New Bitmap("c:\b.bmp")
g.DrawImage(img1, 0, 0, img1.Width, img1.Height)
g.DrawImage(img2, 10, 10)
img1.Save("test.bmp", Imaging.ImageFormat.Bmp)
img2.Dispose()
g.Dispose()

上記のように記載して実行してみましたが
b.bmpは消えてしまいます

浅学者ゆえお手数をおかけして申し訳ございませんが
よろしくご教授ください

補足日時:2007/10/30 11:54
    • good
    • 0

単純な合成でいいのでしたら


ベースになるa.bmpは ピクチャボックスのImageプロパティやBackgroundImageに設定します

b.bmpを合成すには 何かのイベントで
Dim img as new Bitmap("b.bmp")
Dim g as Graphics = PictureBox1.CreateGraphics()
g.DrawImage( img, new Point( 10, 10 ) )
img.Dispose()
と言った具合です
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます
ご指導の通りに実行しましたところ期待通り作動いたしました

本当にありがとうございます

重ねての質問で大変恐縮ですが合成結果を保存したところ
b.bmpが合成されずに元のa.bmpのみ保存されてしまいました

Dim img As New Bitmap("c:\b.bmp")
Dim g As Graphics = PictureBox1.CreateGraphics()
g.DrawImage(img, New Point(10, 10))
img.Dispose()

'bmp形式で保存する
PictureBox1.Image.Save("test.bmp", imaging.ImageFormat.Bmp)

このようなコードですが何かもうひと工夫必要でしょうか?

お礼日時:2007/10/29 02:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!