winforms 如何画这些点?

i86rm4rw  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(142)

我找不到任何关于如何绘制几个点(用于分割分隔符滑块)的信息,如第一张图片所示。

我正在画这个

现在,我的自定义控件代码正在绘制一条带阴影的直线

public class CustomPaintSplitter : SplitContainer {

   ...

   protected override void OnPaint(PaintEventArgs pe)
   {
            Graphics g = pe.Graphics;

            Rectangle r = ClientRectangle;
            g.FillRectangle(new SolidBrush(BackColor), r);

            if (Orientation == Orientation.Horizontal)
            {
                SplitterWidth = 9;
                int recWidth = SplitterRectangle.Width / 3;
                Rectangle split_rect = new(SplitterRectangle.X + recWidth, SplitterRectangle.Y, SplitterRectangle.Width - recWidth, SplitterRectangle.Height);

                int x = split_rect.X;
                int y = split_rect.Y + 3;

                g.DrawLine(new Pen(SystemColors.ControlLightLight), x, y, x, y + 2);
                g.DrawLine(new Pen(SystemColors.ControlLightLight), x, y, x + recWidth, y);
                g.DrawLine(new Pen(SystemColors.ControlDark), x, y + 2, x + recWidth, y + 2);
                g.DrawLine(new Pen(SystemColors.ControlDark), x + recWidth, y, x + recWidth, y + 2);
            }

            // Calling the base class OnPaint
            base.OnPaint(pe);
   }
}

这怎么能实现呢?我在互联网上尝试了不同的点[]方法,但没有一个接近我试图实现的目标。

  • 即使是指定绘制的“点”数的参数也是一个优点。*

任何帮助都是感激不尽的!

nfg76nw0

nfg76nw01#

我只是把它画在面板上,但你可以用同样的方式使用它。

private void panel1_Paint(object sender, PaintEventArgs e)
    {
        e.Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
        Brush b = new SolidBrush(Color.Gray);
        e.Graphics.FillEllipse(b, new Rectangle(10, 5, 5, 5));
        e.Graphics.FillEllipse(b, new Rectangle(20, 5, 5, 5));
        e.Graphics.FillEllipse(b, new Rectangle(30, 5, 5, 5));
    }

相关问题