C# GDI+ 利用 Rectangle GraphicsPath 判断 矩形或多边形 图形关系

最近在做一些简单的图像对比工作,总结了一些GDI+对象的使用方式,记录下来共享给大家使用。

判断Rectangl与多边形的关系

  /// <summary>
        /// 是否包含输入范围
        /// </summary>
        /// <param name="rectangle">要对比的范围</param>
        /// <param name="scale">当前模型对比比例,如放大一倍、缩小一倍等,默认是1</param>
        /// <returns></returns>
        public bool Contains(Rectangle rectangle, double scale)
        {
            try
            {//按照比例缩放当前模型范围
                var ys = PtsYArray;
                var xs = PtsXArray;
            
                var gp = new GraphicsPath();
                gp.StartFigure();
                for (int i = 0; i < ys.Length; i++)
                {
                    //当前点和下一点不为空
                    if (!string.IsNullOrEmpty(ys[i]) && !string.IsNullOrEmpty(xs[i]) && !string.IsNullOrEmpty(ys[i+1]) && !string.IsNullOrEmpty(xs[i+1]))
                    {

                        gp.AddLine((int)(int.Parse(xs[i]) * scale), (int)(int.Parse(ys[i]) * scale), (int)(int.Parse(xs[i + 1]) * scale),
                                   (int)(int.Parse(ys[i + 1]) * scale));
                    }
                    else
                    {
                        gp.CloseFigure();
                        break;
                    }
                }
                var rg = new Region(gp);
               return rg.IsVisible(rectangle);
            }
            catch
            {
                return false;
            }
        }

判断Rectangl与Rectangl的关系

  /// <summary>
        /// 是否包含输入范围
        /// </summary>
        /// <param name="rectangle">要对比的范围</param>
        /// <param name="scale">当前模型对比比例,如放大一倍、缩小一倍等,默认是1</param>
        /// <returns></returns>
        public bool Contains(Rectangle rectangle, double scale)
        {
            try
            {//按照比例缩放当前模型范围
                var rectangle2 = new Rectangle((int) (int.Parse(X)*scale), (int) (int.Parse(Y)*scale),
                                               (int) (int.Parse(xR)*scale), (int) (int.Parse(yR)*scale));
                return rectangle.IntersectsWith(rectangle2);//对比两个最大外包是否有包含关系
            }
            catch 
            {
                return false;
            }
        }

希望对大家有用:)

转载于:https://www.cnblogs.com/aoldman/p/3663516.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
06-02
好的,以下是一些关于 C# GDI+ 的面试题: 1. 什么是 GDI+?它有什么作用? GDI+ 是 .NET Framework 中的图形设备界面,它提供了一组开发人员可以用来创建高质量图形和图像的类和方法。通过 GDI+,我们可以创建各种各样的图形和图像,包括线条、矩形、圆形、多边形、文本、图片等,还可以进行图像处理、图形绘制等操作。 2. GDI+ 和 GDI 的区别是什么? GDI+ 是 GDI 的升级版,在功能上比 GDI 更加强大,它提供了更多的绘图方法和更高级的对象模型,同时还支持 alpha 通道、图像处理等高级功能。此外,GDI+ 还支持更多的图像格式,包括 BMP、JPEG、PNG、GIF、TIFF 等。 3. 如何使用 GDI+ 绘制一条直线? 在 C# 中,我们可以使用 System.Drawing 命名空间中的 Pen 和 Graphics 对象来绘制直线,具体的代码示例如下: ``` // 创建 Pen 对象 Pen pen = new Pen(Color.Black); // 创建 Graphics 对象 Graphics g = this.CreateGraphics(); // 绘制直线 g.DrawLine(pen, 0, 0, 100, 100); ``` 4. 如何使用 GDI+ 绘制一个矩形? 和绘制直线类似,我们可以使用 System.Drawing 命名空间中的 Pen 和 Graphics 对象来绘制矩形,具体的代码示例如下: ``` // 创建 Pen 对象 Pen pen = new Pen(Color.Black); // 创建 Graphics 对象 Graphics g = this.CreateGraphics(); // 创建 Rectangle 对象 Rectangle rect = new Rectangle(0, 0, 100, 100); // 绘制矩形 g.DrawRectangle(pen, rect); ``` 5. 如何使用 GDI+ 绘制一个圆形? 和绘制直线、矩形类似,我们可以使用 System.Drawing 命名空间中的 Pen 和 Graphics 对象来绘制圆形,具体的代码示例如下: ``` // 创建 Pen 对象 Pen pen = new Pen(Color.Black); // 创建 Graphics 对象 Graphics g = this.CreateGraphics(); // 创建 Rectangle 对象 Rectangle rect = new Rectangle(0, 0, 100, 100); // 绘制圆形 g.DrawEllipse(pen, rect); ``` 以上是几个常见的关于 C# GDI+ 的面试题和答案,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值