Aforge 图像旋转导致红色 X

Aforge Image Rotation results in a red X

我正在尝试使用 AForge 旋转图像。这是代码(在图片框的绘制事件方法中):

int radius = 10; 
Image img = new Bitmap("file_path.png");
Bitmap image = new Bitmap(img, radius, radius);

//arbitrary angle of 67
RotateBilinear ro = new RotateBilinear(67, true);
image = ro.Apply(image);
Graphics g = e.Graphics;
g.DrawImage(image, 100, 100);

如果我取出 RotateBilinear 线和 ro.Apply 线,它可以很好地绘制原始图像,但是当我尝试旋转它时,表格的背景变成白色,红色 x 的轮廓为表格周围出现红色。有人知道这个问题吗?

当代码生成异常错误时,您会得到红色的 X。

我没看到你在哪里分配了 agentargent.image,但你使用了这些 variables/properties。我怀疑你有一些空值或类似的东西,你真的想写:

image = ro.Apply(image);

因为您最初设置了 image 并在 DrawImage 调用中使用了它。

尝试在您的代码周围加上 try/catch。

int radius = 10; 
Image img = new Bitmap("file_path.png");
Bitmap image = new Bitmap(img, radius, radius);
//arbitrary angle of 67

try
{
    image = AForge.Imaging.Image.Clone(image, PixelFormat.Format8bppIndexed);
    RotateBilinear ro = new RotateBilinear(67, true);
    image = ro.Apply(image);
}
catch (Exception e)
{ 
    Debug.WriteLine(string.Format("Caught Exception {0}\n{1}", e.GetType(), e.Message);
} 

Graphics g = e.Graphics;
g.DrawImage(image, 100, 100);

如果我的怀疑是正确的,你会让红色 x 消失,图像将被渲染 un-rotated。并且您将在 Visual Studio 中输出 window 中有一些跟踪语句告诉您异常类型和异常消息。这些信息应该可以让您了解问题出在哪里。