C# Graphics.DrawImage是否会无意中修剪图像?
我使用的代码可以获取位图并将其转换为24 BPP,这样我就可以在特别需要该文件格式的程序中使用它。代码如下:C# Graphics.DrawImage是否会无意中修剪图像?,c#,graphics,tiff,C#,Graphics,Tiff,我使用的代码可以获取位图并将其转换为24 BPP,这样我就可以在特别需要该文件格式的程序中使用它。代码如下: using (Bitmap tempImage = new Bitmap(pageToScan.FullPath)) { if (tempImage.PixelFormat != System.Drawing.Imaging.PixelFormat.Format24bppRgb) { using (Bitmap tempIm
using (Bitmap tempImage = new Bitmap(pageToScan.FullPath))
{
if (tempImage.PixelFormat != System.Drawing.Imaging.PixelFormat.Format24bppRgb)
{
using (Bitmap tempImage2 = new Bitmap(tempImage.Size.Width, tempImage.Size.Height,
System.Drawing.Imaging.PixelFormat.Format24bppRgb))
{
using (Graphics g = Graphics.FromImage(tempImage2))
{
g.DrawImage(tempImage, new Point(0, 0));
}
RecognizeBitmap(pageToScan, tempImage2); //Thanks to Tim on this refactoring.
}
}
else
RecognizeBitmap(pageToScan, tempImage);
}
关于上述代码,我有两个问题:
更好的方法是使用该方法。这将以像素格式作为参数:
using (Bitmap tempImage = new Bitmap(pageToScan.FullPath))
{
if (tempImage.PixelFormat != System.Drawing.Imaging.PixelFormat.Format24bppRgb)
{
Rectangle r = new Rectangle(0, 0, tempImage.Width, tempImage.Height);
RecognizeBitmap(pageToScan, tempImage.Clone(r, PixelFormat.Format24bppRgb);
}
else
{
RecognizeBitmap(pageToScan, tempImage);
}
}
酷。我应该在tempImage.Clone上放一个标签吗?是的。您可能应该这样做,同时重构整个方法,以消除任何剩余的重复代码。