C# 不能在循环中画线

C# 不能在循环中画线,c#,winforms,graphics,C#,Winforms,Graphics,在mainForm(Form1)中,我调用另一个表单的方法。在这里,它使用这个.Refresh()调用onPaint方法。在onPaint方法中,有一个用于绘制线的for循环。但抽绳不起作用 这是密码 private void onPaintobject sender, PaintEventArgs e) { try { DrawXYBse(e.Graphics); if(logModels != null

在mainForm(Form1)中,我调用另一个表单的方法。在这里,它使用这个.Refresh()调用onPaint方法。在onPaint方法中,有一个用于绘制线的for循环。但抽绳不起作用

这是密码

private void onPaintobject sender, PaintEventArgs e)
    {
        try
        {
            DrawXYBse(e.Graphics);

            if(logModels != null)
                SetDots(e.Graphics); 
        }
        catch (Exception exception)
        {
            Console.WriteLine(exception.Message);
        }

    }

    public void SetDots(Graphics g)
    {
        g.DrawLine(Pens.Orange, 80f, 80f, 80.1f, 80.1f);
        foreach (LogModel logModel in logModels)
        {
            g.DrawLine(Pens.Orange, logModel.DX + 80f, logModel.DY + 80f, logModel.DX + 80.1f, logModel.DY + 80.1f);
        }
    }

    public void CallOnPaint(List<LogModel> logModels)
    {
        this.logModels = logModels;
        //call onPaint()
        this.Refresh();
    }
private void onPaintobject发送方,PaintEventArgs e)
{
尝试
{
DrawXYBse(如图形);
if(logModels!=null)
设定点(如图形);
}
捕获(异常)
{
Console.WriteLine(异常消息);
}
}
公共无效设置点(图g)
{
g、 抽绳(橙色、80f、80f、80.1f、80.1f);
foreach(logModels中的LogModel LogModel)
{
g、 抽绳(Pens.橙色、logModel.DX+80f、logModel.DY+80f、logModel.DX+80.1f、logModel.DY+80.1f);
}
}
public void CallOnPaint(列出日志模型)
{
this.logModels=logModels;
//调用onPaint()
这个。刷新();
}

我查看了您的代码,并假设线条是不可见的,因为它们的尺寸变化太小了0.1像素<代码>(g.drawine(Pens.Orange,logModel.DX+80f,logModel.DY+80f,logModel.DX+80.1f,logModel.DY+80.1f))我把它改为10,现在它们都在表格上了。(可能您忘记订阅Paint event,或者可能不调用CallOnPaint):

公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
this.Paint+=onPaint;
}
列出日志模型;
私有void onPaint(对象发送方,PaintEventArgs e)
{
尝试
{
DrawXYBse(如图形);
if(logModels!=null)
设定点(如图形);
}
捕获(异常)
{
Console.WriteLine(异常消息);
}
}
私有void DrawXYBse(图形g)
{ }
公共无效设置点(图g)
{
g、 抽绳(橙色、80f、80f、80.1f、80.1f);
foreach(logModels中的LogModel LogModel)
{
g、 抽绳(Pens.橙色、logModel.DX+80f、logModel.DY+80f、logModel.DX+90.1f、logModel.DY+90.1f);
}
}
public void CallOnPaint(列出日志模型)
{
this.logModels=logModels;
//调用onPaint()
这个。刷新();
}
私有无效按钮1\u单击(对象发送者,事件参数e)
{
CallOnPaint(新列表()
{
新的LogModel(){DX=20,DY=20},
新的LogModel(){DX=40,DY=30},
新的LogModel(){DX=60,DY=40},
新的LogModel(){DX=80,DY=50},
新的LogModel(){DX=90,DY=60},
新的LogModel(){DX=100,DY=70},
});
}
}
公共类日志模型
{
公共浮点DX{get;set;}
公共浮点DY{get;set;}
}

最重要的问题是,您是否使用了调试器和断点如果答案是否定的,那么请这样做,如果答案是肯定的,那么LogModel的所有值是什么?我收回了我的否决票,但是“但是抽绳不起作用”是非常不具体的。我们不能在这方面做太多…谢谢您的评论。但问题是我刷新了图形,点太小了,看不见。非常感谢。我就是看不见这些点,因为它们太小了。我真的很感激你的回答!:)
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.Paint += onPaint;
    }

    List<LogModel> logModels;

    private void onPaint(object sender, PaintEventArgs e)
    {
        try
        {
            DrawXYBse(e.Graphics);

            if (logModels != null)
                SetDots(e.Graphics);
        }
        catch (Exception exception)
        {
            Console.WriteLine(exception.Message);
        }

    }

    private void DrawXYBse(Graphics g)
    { }

    public void SetDots(Graphics g)
    {
        g.DrawLine(Pens.Orange, 80f, 80f, 80.1f, 80.1f);
        foreach (LogModel logModel in logModels)
        {
            g.DrawLine(Pens.Orange, logModel.DX + 80f, logModel.DY + 80f, logModel.DX + 90.1f, logModel.DY + 90.1f);
        }
    }

    public void CallOnPaint(List<LogModel> logModels)
    {
        this.logModels = logModels;
        //call onPaint()
        this.Refresh();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        CallOnPaint(new List<LogModel>()
        {
            new LogModel(){DX = 20, DY =20},
            new LogModel(){DX = 40, DY =30},
            new LogModel(){DX = 60, DY =40},
            new LogModel(){DX = 80, DY =50},
            new LogModel(){DX = 90, DY =60},
            new LogModel(){DX = 100, DY =70},
        });
    }
}
public class LogModel
{
    public float DX { get; set; }
    public float DY { get; set; }

}