c# - 不能在循环中画线
问题描述
在 mainForm (Form1) 中,我正在调用另一个表单的方法。并在那里使用 this.Refresh() 调用 onPaint 方法。在 onPaint 方法中,有一个画线的 for 循环。但是 DrawLine 不工作
这是代码。
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();
}
解决方案
我查看了您的代码并假设线条是不可见的,因为它们的尺寸变化太小 0.1 像素。(g.DrawLine(Pens.Orange, logModel.DX + 80f, logModel.DY + 80f, logModel.DX + 80.1f, logModel.DY + 80.1f)
) 我将其更改为 10,它们现在在表格中。(也许您忘记订阅 Paint 事件或者不调用 CallOnPaint):
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; }
}
推荐阅读
- python - pytest:固定装置作为函数参数
- sql - SQL Oracle - 从文件中选择超过 1000 行
- jquery - 将类添加到单击的项目并从所有其他项目中删除,但如果再次单击相同的项目,则也从该项目中删除类,jQuery
- postgresql - PostgreSQL 更新最后插入的数据字段
- php - HTML在页面上迭代时写入php的数量
- c# - ISchedulerProvider / IScheduler - 如何引入多线程?
- node.js - 我的节点 package.json 中的 cores 和 cors 有什么区别?
- angular - 复选框检查了角度 4 中的值是否为真
- angular - 为什么我的 Dist 文件夹不存在,尽管我的项目中有?
- javascript - 如何在 windbg 脚本中并行执行命令?