c# - 将图像文件打开为位图类 32bppPArgb

标签 c# image bitmap pixelformat

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

最佳答案

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

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

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

关于c# - 将图像文件打开为位图类 32bppPArgb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8000690/

相关文章:

c# - 在 C# (winform .net) 中使用 .c 文件

java - Web服务上传图片url

language-agnostic - 是(宽,高)还是(高,宽)?

c++ - GDI+:如何用红色像素替换黑色像素?

windows - 使用GDI显示图像的红色 channel

c# - Azure 中 ExecuteSqlCommand 的事务

c# - 是否可以在运行时将命名空间动态更改为 ServiceContract?

c# - 创建客户端列表时,Address 应该是一个结构体(类客户端)吗?

Javascript:鼠标悬停缩略图,显示更大的图像..尝试使用 'this'

javascript - 在显示图像之前确定图像是否缓存在浏览器中(内存或磁盘缓存)?