将图像文件打开为Bitmap类为32bppPArgb

时间:2011-11-03 19:25:01

标签: c# image bitmap pixelformat

.NET是否支持PixelFormat转换?我找不到任何方法或构造器来做我想做的事。

我允许用户选择任何图像文件,我正在从文件中创建一个新的Bitmap类。

然后我使用自定义绘画绘制图像。它非常慢,我被告知GDI处理32bppPArgb像素格式的图像要快得多。

如何执行转换?假设我有一个文件名的字符串,可以是JPEG,TIF,PNG等,我想将它加载到Bitmap类。

编辑:

这是我想要做的,但它没有正确加载图像。我画画时图像没有填满整个位图。

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);
    }
}

1 个答案:

答案 0 :(得分:1)

如果您有缩放问题,则不是由像素格式引起的。相反,它可能是由源图像文件中的DPI设置引起的。试试这个而不是.DrawImageUnscaled:

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

这就是我经常使用的而不是.DrawImageUnscaled - 它让我失败了太多次了!