繁体   English   中英

C#将System.Drawing.Rectangle转换为System.Drawing.Bitmap上的Ellipse

[英]C# System.Drawing.Rectangle into Ellipse on System.Drawing.Bitmap

我有一个面部识别库,可以给我一个矩形阵列。 现在,我正在使用这种方式绘制矩形。

foreach (Rectangle box in boxes)
{
     for (int x = box.X; x <= box.X + box.Width; x++)
     {
          for (int y = box.Y; y <= box.Y + box.Height; y++)
          {
               outputbmp.SetPixel(x, y, Color.FromKnownColor(KnownColor.Red));
          }
     }
}

在此处输入图片说明

我正在寻找简单的东西:

Ellipse ellipse = new Ellipse(box); //cast rect to ellipse
outputbmp.DrawEllipse(ellipse);

看起来会更像:

在此处输入图片说明

椭圆的轮廓接触矩形角的地方。

基于我上面使用的方法,绘制矩形很容易,但是对于椭圆,则需要我知道椭圆中的所有点。 只是想知道是否有什么可以使我的生活更轻松。

不要尝试直接绘制到位图,可以创建一个更高级别的对象,称为Graphics ,它可以为您提供各种出色的绘图工具。 它也将比逐像素绘制快得多。

您可以通过调用Graphics.FromImage并传入Bitmap来为给定的Bitmap创建一个Graphics 您必须记住,尽管调用了Dispose on the Graphics,否则会泄漏资源。

一旦拥有位图的Graphics实例,就可以调用DrawEllipse并完全按照期望传递边界。

MSDN

private void DrawEllipseInt(Graphics g)
{
    // Create pen.
    Pen blackPen = new Pen(Color.Black, 3);

    // Create location and size of ellipse.
    int x = 0;
    int y = 0;
    int width = 200;
    int height = 100;

    // Draw ellipse to screen.
    g.DrawEllipse(blackPen, x, y, width, height);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM