如何绘制看起来像CAD高程图的矩形

时间:2012-12-26 23:51:23

标签: c# winforms graphics system.drawing cad

我应该使用什么画笔来绘制线条白色内部的矩形和矩形周边的线条,如下面的高程。

form1 winform是我正在研究的,winform背后的图像是我需要如何看待我的winform中的矩形。

为了使问题更容易,我如何用白色填充矩形的内部?

如何用白色填充矩形的LINES?我不需要填充矩形的内部,我需要用白色填充构成矩形的4条线的一部分。

CAD Example

       void BuildShopDrawing(ElevationResponse elevation)
    {

        float penWidth = (float)((2f / 12f) * PIXELS_PER_FOOT);
        Pen blackPen = new Pen(Color.FromArgb(40, 84, 149), penWidth);
        Bitmap canvas = new Bitmap((((int)elevation.TotalWidthFeet) * PIXELS_PER_FOOT) + 55, (((int)elevation.TotalHeightFeet) * PIXELS_PER_FOOT) + 25);
        Graphics dc = Graphics.FromImage(canvas);

        RectangleF[] bays = new RectangleF[elevation.Bays.Count];
        float x = 10F;
        float width = 0F;
        float height = 0F;

        for (int i = 0; i < elevation.Bays.Count; i++)
        {
            if (i > 0)
            {
                x += (float)((elevation.Bays[i - 1].WidthInches / 12) * PIXELS_PER_FOOT);
            }
            width = (float)(elevation.Bays[i].WidthInches / 12) * PIXELS_PER_FOOT;
            height = (float)(elevation.Bays[i].HeightInches / 12) * PIXELS_PER_FOOT;
            bays[i] =
                 new RectangleF(new PointF(x, 10),
                 new SizeF(width, height));
        }

        dc.DrawRectangles(blackPen, bays);
        this.picBx.Image = canvas;
        this.Size = new System.Drawing.Size(canvas.Width + 10, canvas.Height + 50);
    }

1 个答案:

答案 0 :(得分:3)

你需要在Pen Class更具体的CompoundArray Property看一下,它会给你一些你想要的东西,你需要玩一些其他的Pen Class属性让你的过渡正确。作为附注,当您发布依赖于外部自定义类的示例代码时,您会更难以帮助某人,最好确保代码可以自行运行。

在声明笔后尝试添加此内容。

float[] cmpArray = new float[4]{0.0F, 0.2F, 0.7F, 1.0F};
blackPen.CompoundArray = cmpArray;

它看起来像这样:

enter image description here