- PR -

VB.NETでのBitBltの使用方法

1
投票結果総投票数:7
Windows VB .NET 7 100.00%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
Ganpon
会議室デビュー日: 2005/12/08
投稿数: 4
投稿日時: 2005-12-08 20:16
いつもご利用させていただいております。

件名についてご助言いただけないでしょうか。
2つの画像(1枚はレイヤー画像、1枚は背景となる画像)を合成をするために、
BitBltを使用しようと検討しているのです。
しかし、2つの画像を合成する段階で、うまくいきません。
一応、他のサイトで調べたとおりしているのですが.....
作成したソースは以下のとおりです。

Dim disDC As IntPtr = GetDC(IntPtr.Zero)
Dim imageFile As Image = Image.FromFile("C:\SAMPLE.bmp")
Dim imageFile1 As Image = Image.FromFile("C:\SAMPLE2.bmp")

'Graphicsの作成
Dim g As Graphics = Graphics.FromImage(imageFile)
Dim g1 As Graphics = Graphics.FromImage(imageFile1)


'Graphicsのデバイスコンテキストを取得
Dim hDC As IntPtr = g.GetHdc()
Dim hDC1 As IntPtr = g1.GetHdc()
Dim a As Boolean

'Bitmapに画像をコピーする
a = BitBlt(hDC, 0, 0, imageFile.Width, imageFile.Height, hDC1, 0, 0, SRCCOPY)
'解放
g.ReleaseHdc(hDC)
g.Dispose()
g1.ReleaseHdc(hDC1)
g1.Dispose()
ReleaseDC(IntPtr.Zero, hDC1)

PictureBox1.Image = imageFile
PictureBox1.Refresh()



開発環境
OS:WINDOWXP
言語:Microsoft Visual Basic .NET
   .NET Framework 1.1

以上です。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-12-08 21:04
BitBltってどのクラスのメンバですか?
もしかしてWin32APIのあれ?
>うまくいきません。
が具体的にどういうことなのか分かれば皆さんから助言を頂けるかと思います。
Ganpon
会議室デビュー日: 2005/12/08
投稿数: 4
投稿日時: 2005-12-08 23:42
ご返答ありがとうございます。
説明不足で申し訳ありません。

>BitBltってどのクラスのメンバですか?
>もしかしてWin32APIのあれ?
ご指摘のとおりWin32APIのBitBltです。VB6では、いろいろサンプルが
ありますが、VB.NETはサンプルも無く、困っております。

>が具体的にどういうことなのか分かれば皆さんから助言を頂けるかと思います。
imageFileに、imageFile1がコピーされると認識しておりましたが、実際に表示
させてみると、imageFileが表示されます。他に、「SRCAND(転送先へピクセルごとのAND演算で結合)」もためしてみましたが結果は一緒でした。
「SRCCOPY(転送先へそのままコピーする)」を「BLACKNESS(転送先を黒で塗りつぶす)」に変更すると、黒く表示されますので、処理自体ができていないことはないと思いますが...
使い方を間違っている気もしますが、画像編集系の開発自体はじめてですので、試行錯誤しております。
なにとぞご教授のほどお願いいたします。







まどか
ぬし
会議室デビュー日: 2005/09/06
投稿数: 372
お住まい・勤務地: ますのすし管区
投稿日時: 2005-12-08 23:48
どぼんさん(http://dobon.net)のTips
「PictureBoxのImageプロパティに関するよくある勘違い」
を見てみるとよいかも。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-08 23:53
レイヤ合成って、System.Drawing.Graphics.DrawImage メソッドで出来ませんか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Ganpon
会議室デビュー日: 2005/12/08
投稿数: 4
投稿日時: 2005-12-09 09:52
ご助言ありがとうございました。
ご指摘をいただいてページの方法を試してみようとしましたが、
System.Drawing.Graphics.DrawImageで画像を表示できないようです。
ページに書いてあるサンプルをそのまま貼り付けて処理させていますので、
問題はないはずですが。

なにとぞご教授のほどお願いいたします。
Ganpon
会議室デビュー日: 2005/12/08
投稿数: 4
投稿日時: 2005-12-12 13:50

じゃんぬねっと様に指摘していただいた方法で画像の合成ができました。
ご協力ありがとうございました。

1

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