1

画像を生成するためのコードを書いています - 基本的に、大きくて透明な領域を含むソース画像があります。

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

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

アルファ チャネルがカラー チャネルのように平滑化されることを期待していましたが、そうはなりませんでした。半透明のピクセルがいくつか発生しましたが、全体的に非常にブロック状です。何を与える?

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が行うことのように、私が欲しいのはスーパーサンプリングだと思います

4

1 に答える 1

2

イメージから新しいビットマップを作成する代わりに、新しいビットマップにイメージを描画します。

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

InterpolationmodeオブジェクトにはやPixelOffsetModeのようなプロパティがありGraphics、イメージのスケーリングと描画を制御するために使用できます。

于 2009-03-10T18:43:01.580 に答える