我正在尝试使用AForge旋转图像。这是代码(在图片框的paint事件方法中):
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的轮廓为红色出现。有人知道这个问题吗?
答案 0 :(得分:0)
当代码生成异常错误时,您将获得红色X.
我没有看到您分配agent
或argent.image
的位置,但您使用了这些变量/属性。我怀疑你有一些空值或类似的东西,你真的打算写:
image = ro.Apply(image);
因为您最初设置了image
并在DrawImage
来电中使用了它。
答案 1 :(得分:0)
尝试在代码周围加一个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消失,图像将被取消旋转。并且您将在Visual Studio的输出窗口中有一些跟踪语句,告诉您异常类型和异常消息。该信息应该可以让您了解哪些是出错的。