我试图在位图上画半圆和半圆(全部是黑线)。
我的预期结果如下:

我目前的结果如下:

我试过很多不同的选择,但看起来不错。
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条黑线??
发布于 2014-05-15 18:01:11
要做到这一点,最简单的方法是画出三个同心圆,然后让剪裁来处理其中两个落在绘图区域之外的事实。
实现基于弧的绘图的方法可能是从同心圆开始(因此您知道您在正确的位置有凸起),然后将DrawEllipse更改为DrawArc,将开始角和扫描角设置为正确的值。
开始角是从x轴(向圆周中心右侧的水平线)测量的,所以对于较小的弧线,你需要一个大约305度的角度。从那里你需要它画大约90度。外弧将是相似的,但一个较小的弧度,所以它可能从330度左右,扫描大约60度。
发布于 2014-05-15 18:00:47
解决方案似乎是在位图边界外绘制一个矩形,并使用graphic.DrawEllipse方法绘制曲线。
下面是工作代码的一个片段:
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);感谢汉斯·帕桑特向我指出了这一思路。
https://stackoverflow.com/questions/23683672
复制相似问题