C# GDI绘图问题
想实现该功能:接受外界的数据动态的绘制图表曲线,我在自定义的控件中绘制一张图表使用了protectedoverridevoidOnPaint(PaintEventArgs...
想实现该功能:接受外界的数据动态的绘制图表曲线,我在自定义的控件中绘制一张图表使用了protected override void OnPaint(PaintEventArgs e)函数,然后按下button后开始画图。问题就是那个动态画图的函数要怎么写才能在已经绘制的表格上接着画图? 是在OnPaint(PaintEventArgs e)里写还是重新写一个函数?请指教~
展开
1个回答
2014-02-03
展开全部
根据你接收的数据格式 用合适的变量(变量数组)来保存
然后写一个event事件来监视这个变量(变量数组)的变化 如果不一样 就在变化事件里面用GDI+画图
给你一个监视变量的例子
class Event
{
public delegate void tempChange(object sender, EventArgs e);
public event tempChange OntempChange;
string temp;
public string Temp
{
get
{
return temp;
}
set
{
if (temp != value)
{
OntempChange(this, new EventArgs());
}
temp = value;
}
}
}
复制代码
分析:
要定义一个事件,首先声明事件和委托
具体格式如下:
声明委托
public delegate void 事件句柄函数(object sender,EventArgs e);
复制代码
object用来传递事件的发生者,EventArgs用来传递事件的细节
下面定义一个此委托类型类型的事件
public event 事件句柄函数 事件名;
复制代码
在这里,我定义了一个名为OntempChange的事件,并在属性访问器里设定当读取值与原值不同时触发该事件
使用事件(部分代码):
public partial class Form1 : Form
{
Event ven = new Event();
public Form1()
{
ven.OntempChange += new Event.tempChange(ven_OntempChange);
InitializeComponent();
}
void ven_OntempChange(object sender, EventArgs e)
{
MessageBox.Show(ven.Temp); \\这里用GDI+画图
}
private void button1_Click(object sender, EventArgs e)
{
ven.Temp = textBox1.Text;
}
然后写一个event事件来监视这个变量(变量数组)的变化 如果不一样 就在变化事件里面用GDI+画图
给你一个监视变量的例子
class Event
{
public delegate void tempChange(object sender, EventArgs e);
public event tempChange OntempChange;
string temp;
public string Temp
{
get
{
return temp;
}
set
{
if (temp != value)
{
OntempChange(this, new EventArgs());
}
temp = value;
}
}
}
复制代码
分析:
要定义一个事件,首先声明事件和委托
具体格式如下:
声明委托
public delegate void 事件句柄函数(object sender,EventArgs e);
复制代码
object用来传递事件的发生者,EventArgs用来传递事件的细节
下面定义一个此委托类型类型的事件
public event 事件句柄函数 事件名;
复制代码
在这里,我定义了一个名为OntempChange的事件,并在属性访问器里设定当读取值与原值不同时触发该事件
使用事件(部分代码):
public partial class Form1 : Form
{
Event ven = new Event();
public Form1()
{
ven.OntempChange += new Event.tempChange(ven_OntempChange);
InitializeComponent();
}
void ven_OntempChange(object sender, EventArgs e)
{
MessageBox.Show(ven.Temp); \\这里用GDI+画图
}
private void button1_Click(object sender, EventArgs e)
{
ven.Temp = textBox1.Text;
}
更多追问追答
追问
可能你理解错了我只是想知道使用了protected override void OnPaint(PaintEventArgs e)之后如何再在已经画好的图表的基础上继续画图
追答
你的意思是如何通过不间断的GDI+画图 到达那种动态效果? 类似任务管理器里面的CPU使用率的那种效果?
你是这个意思吧
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询