|
分類:[VB.NET/VB2005 以降]
2010/05/21(Fri) 11:18:41 編集(投稿者)
みなさんこんにちは。 VB2008を使用して、元々ある画像を上に重ねて別の画像を作成しようと思っています。 例えば、以下のように、maru1.gifという画像を、300×300pxのキャンバス上に重ねようとしてみました。 ちなみに、maru1.gifは、100×100pxの球体を描いた画像で、球体の外側の領域は透過色に設定してあります。
Dim b As New Bitmap(300, 300, Imaging.PixelFormat.Format24bppRgb) Dim bMaru As Bitmap = New Bitmap("ファイルのパス\maru1.gif") Dim g As Graphics = Graphics.FromImage(b) g.Clear(Color.White) g.DrawImage(b, 100, 70, 75, 75) g.Dispose() bMaru.Dispose() b.Save("ファイルのパス\output.png", Imaging.ImageFormat.Png) b.Dispose()
これをWindows Vistaで実行すると、球体の画像はきれいに表示されるのですが、 Windows 7で実行すると、球体の外側の輪郭の部分に、黒く汚いノイズのようなものが現れます。 これは、おそらく、キャンバスのビットマップのインスタンス作成時に、誤ってPixelFormatを Format24bppRgbにしてしまったため、maru1.gifの透過色が悪さをしているのだと思いますが、 どうしてVistaでは問題なくきれいに画像が作成されたのでしょうか? (確かにbのインスタンス作成時にPixelFormatを省略したり、32ビットにしたりするとWindows 7でも問題ありません。)
あと、同じ32ビットでもPixelFormatの32bppRgbと32bppArgbはどのように違うのでしょうか。
宜しくお願いたします。
|