首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Graphics.DrawHalfCirle & Graphics.DrawPartialCircle

Graphics.DrawHalfCirle & Graphics.DrawPartialCircle
EN

Stack Overflow用户
提问于 2014-05-15 16:17:51
回答 2查看 81关注 0票数 1

我试图在位图上画半圆和半圆(全部是黑线)。

我的预期结果如下:

我目前的结果如下:

我试过很多不同的选择,但看起来不错。

代码语言:javascript
复制
using (var b = new Bitmap(200, 100, PixelFormat.Format24bppRgb))
{
   using (var g = Graphics.FromImage(b))
   {
      g.FillRectangle(new SolidBrush(Color.LightGray), 0, 0, 200, 100);

      // RED COLOR   
      Rectangle rec = new Rectangle(-15, 50, 70, 100);
      g.DrawRectangle(new Pen(Color.Red, 1f), rec);
      g.DrawArc(new Pen(Color.Red, 3f), rec, 50, 100);

      // WHITE COLOR   
      Rectangle rec = new Rectangle(10, 50, 70, 70);
      g.DrawRectangle(new Pen(Color.White, 1f), rec);
      g.DrawEllipse(new Pen(Color.White, 3f), rec);
   }
}

但这看起来总是完全错误的,在数小时后,我无法找到控制输出的方法。

问题:

是否有一种简单的方法可以使用C#在图形对象中设计目标图像上的3条黑线??

EN

回答 2

Stack Overflow用户

发布于 2014-05-15 18:01:11

要做到这一点,最简单的方法是画出三个同心圆,然后让剪裁来处理其中两个落在绘图区域之外的事实。

实现基于弧的绘图的方法可能是从同心圆开始(因此您知道您在正确的位置有凸起),然后将DrawEllipse更改为DrawArc,将开始角和扫描角设置为正确的值。

开始角是从x轴(向圆周中心右侧的水平线)测量的,所以对于较小的弧线,你需要一个大约305度的角度。从那里你需要它画大约90度。外弧将是相似的,但一个较小的弧度,所以它可能从330度左右,扫描大约60度。

票数 1
EN

Stack Overflow用户

发布于 2014-05-15 18:00:47

解决方案似乎是在位图边界外绘制一个矩形,并使用graphic.DrawEllipse方法绘制曲线。

下面是工作代码的一个片段:

代码语言:javascript
复制
    Pen pen = new Pen(Color.White);

    Rectangle rec = new Rectangle(-30, 50, 100, 100);
    g.DrawEllipse(pen, rec);
    rec = new Rectangle(-30, 10, 150, 150);
    g.DrawEllipse(pen, rec);
    rec = new Rectangle(-30, -30, 200, 200);
    g.DrawEllipse(pen, rec);

感谢汉斯·帕桑特向我指出了这一思路。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23683672

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档