一般来讲,如果只是单纯的使用中心点坐标去画框,那么他的框并不会随着你的二维码的倾斜移动而去跟着倾斜移动,永远都是一个正方形。那么如何解决这一类问题呢,小编有个不太聪明的写法。希望你帮助到你,话不多说直接上代码。
/// bmp也就是传进来的图像
///X,Y也就中心坐标,小编这里没有用到
public Image ImgSta(Bitmap bmp, int x, int y)
{
Bitmap bitmap = new Bitmap(bmp);
Bitmap image = new Bitmap(bitmap.Width, bitmap.Height);
using (Graphics graphics = Graphics.FromImage(image))
{
graphics.DrawImage(bitmap, 0, 0);
graphics.Dispose();
}
Graphics graphicsNew = Graphics.FromImage(image);
//Pen pen = new Pen(Color.Green, 10);
//int w = barBounds.Point1.X - barBounds.Point0.X;
//int h = barBounds.Point3.Y - barBounds.Point0.Y;
Point[] poF= pointFs();
Pen p = new Pen(Color.Green,9);
graphicsNew.DrawLines(p, poF);//重点
graphicsNew.DrawLine(p,poF[0],poF[3]);//重点不加这句那么他就会缺一边所以用这种方式弥补
graphicsNew.Dispose();//释放
bitmap.Dispose();
return image;
}
///获取4个点的中心坐标
public Point[] pointFs()
{
Point[] list = new Point[4];
list[0].X = Bounds.Point0.X;
list[0].Y = Bounds.Point0.Y;
list[1].X = Bounds.Point1.X;
list[1].Y = Bounds.Point1.Y;
list[2].X = Bounds.Point2.X;
list[2].Y = Bounds.Point2.Y;
list[3].X = Bounds.Point3.X;
list[3].Y = Bounds.Point3.Y;
return list;
}
有什么更好的方法欢迎大家讨论学习。。