2

.NETはPixelFormat変換をサポートしていますか?やりたいことをするためのメソッドやコンストラクターが見つかりません。

ユーザーが任意の画像ファイルを選択できるようにし、そのファイルから新しいビットマップクラスを作成しています。

次に、カスタムペイントを使用して画像を描画しています。非常に遅く、GDIは32bppPArgbピクセル形式の画像を処理する方がはるかに高速であると言われています。

変換を実行するにはどうすればよいですか?JPEG、TIF、PNGなどのファイル名の文字列があり、それをビットマップクラスにロードしたいとします。

編集:

これが私がやろうとしていることですが、画像が正しくロードされていません。描画したときに、画像がビットマップ全体を埋めていません。

using (Bitmap tempImage = new Bitmap(filename))
{
    Image = new Bitmap(tempImage.Width, tempImage.Height, PixelFormat.Format32bppPArgb);

    using (Graphics g = Graphics.FromImage(Image))
    {
        g.DrawImageUnscaled(tempImage, 0, 0);
    }
}
4

1 に答える 1

1

スケーリングの問題がある場合は、ピクセル形式が原因ではありません。代わりに、ソースイメージファイルのDPI設定が原因である可能性があります。.DrawImageUnscaledの代わりにこれを試してください:

  g.DrawImage(
      tempImage,
      new Reactangle( Point.Empty, Image.Size ),
      new Reactangle( Point.Empty, Image.Size ),
      GraphicsUnit.Pixels );

.DrawImageUnscaledの代わりにいつも使っていたものです-何度も失敗しました!

于 2011-11-03T20:36:33.710 に答える