2

.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);
    }
}
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 回答