.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);
}
}
答案 0 :(得分:1)
如果您有缩放问题,则不是由像素格式引起的。相反,它可能是由源图像文件中的DPI设置引起的。试试这个而不是.DrawImageUnscaled:
g.DrawImage(
tempImage,
new Reactangle( Point.Empty, Image.Size ),
new Reactangle( Point.Empty, Image.Size ),
GraphicsUnit.Pixels );
这就是我经常使用的而不是.DrawImageUnscaled - 它让我失败了太多次了!