【问题标题】:Drawing on a panel c#在面板上绘图 c#
【发布时间】:2015-04-21 14:20:11
【问题描述】:

我需要在面板上绘制多边形(尺寸 400、400) 我试试这个,但它不起作用。

PointF[] points = new PointF[totalpaso + 1];
for (int d = 0; d <= totalpaso; d++)
{
    s = (float)(hola1[d] + 200);
    w = (float)(hola2[d] + 200);
    j = new PointF(s, w);
    points[d] = j;
}
grafico.DrawPolygon(lapiz, points);

【问题讨论】:

  • doesnt work 永远不会提供足够的关于问题的信息。你是什​​么意思?您收到任何异常或错误消息?请更具体地说明您的问题。
  • 面板没有变化。我的意思是,我执行了它,但面板上什么也没有出现。我没有收到任何异常或错误消息。
  • @JoaquínCastilloSilva 您需要展示更多代码。所有的绘制工作都需要在 OnPaint 上完成,否则在你绘制的区域无效之前你是看不到结果的。

标签: c# visual-studio-2010 drawing


【解决方案1】:

我认为你应该看看这篇文章: https://msdn.microsoft.com/en-us/library/07e699tw(v=vs.110).aspx

但只有这种方法,你不会走得太远。它将在 OnPaint 方法中绘制: C# Forms - Using Paint methods?

【讨论】:

    【解决方案2】:

    您可能希望基于 Panel 创建自己的控件。

    一个非常基本的例子是这样的:

    public sealed class MyPanel: Panel
    {
        public MyPanel()
        {
            this.ResizeRedraw = true;
        }
    
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
    
            using (var brush = new SolidBrush(this.ForeColor))
            {
                e.Graphics.FillEllipse(brush, 0, 0, this.Width, this.Height);
            }
        }
    }
    

    要对其进行测试,请将类添加到 Windows 窗体项目中,进行编译,然后将其拖放到窗体上并在设计器中将其设置为“Dock”。

    然后将 BackColor 设置为红色,ForeColor 设置为蓝色,然后运行程序。

    然后您可以将所需的绘图代码添加到 OnPaint() 覆盖。

    【讨论】:

      猜你喜欢
      • 2011-07-27
      • 2019-05-03
      • 2013-05-06
      • 2019-07-15
      • 2012-11-27
      • 2011-10-17
      • 1970-01-01
      相关资源
      最近更新 更多