2009-03-10 10 views
1

画像を生成するコードを書いています。元画像は大きく、透明領域を含んでいます。アルファチャンネルを使用した画像のサイズ変更

GDI +を使用して画像を開き、オブジェクトを追加します。

私が次にやりたいのは、この新しいイメージをもっと小さくすることです。そのため、ソースImageオブジェクトと高さと幅をとり、それを保存したBitmapコンストラクタを使用しました。

アルファチャンネルがカラーチャンネルのようにスムージングされることを期待していましたが、これは起こりませんでした。半透明のピクセルが2つありましたが、全体的には非常にぼろぼろです。何がありますか?

Using img As New Bitmap("source100x100.png") 
''// Drawing stuff 
Using simg As New Bitmap(img, 20, 20) 
    simg.Save("target20x20.png") 
End Using 
End Using 

編集:私は、私はスーパーサンプリング、ある欲しいものだと思うようなPaint.NETはときイメージから新しいビットマップを作成するのではなく、新しいビットマップ上に画像を描画し、「最高品質」

答えて

2

に設定しないものを。

サイズを指定するだけで空のビットマップを作成し、次にGraphics.FromImageメソッドを使用して、ビットマップのGraphicsオブジェクトを作成します。 DrawImageメソッドを使用して、イメージを新しいビットマップに描画します。

InterpolationmodeおよびPixelOffsetModeのようなプロパティが、画像の拡大縮小および描画方法を制御するために使用できるGraphicsオブジェクトにあります。

+0

SmoothingModeも束を助けました。どうも。 – Hafthor

関連する問題