C# 使用图形而不单击按钮
我有一个表格,其中演示了三种类型的汇编命令(R、i、J)的百分比的饼图。为此,我正在使用图形库。到目前为止,我的应用程序在单击按钮后显示图表和percent foreach命令。我需要做的是不用点击按钮。我尝试了一些替代方案,但什么也没想到。只有百分比显示,直到我按下按钮,饼图才显示。下面显示了我的一些初始代码,这些代码与button_click一起工作,但也显示了我表单的图片。 有什么帮助吗C# 使用图形而不单击按钮,c#,asp.net,.net,visual-studio-2010,C#,Asp.net,.net,Visual Studio 2010,我有一个表格,其中演示了三种类型的汇编命令(R、i、J)的百分比的饼图。为此,我正在使用图形库。到目前为止,我的应用程序在单击按钮后显示图表和percent foreach命令。我需要做的是不用点击按钮。我尝试了一些替代方案,但什么也没想到。只有百分比显示,直到我按下按钮,饼图才显示。下面显示了我的一些初始代码,这些代码与button_click一起工作,但也显示了我表单的图片。 有什么帮助吗 public float d1; public float d2; publi
public float d1;
public float d2;
public float d3;
private void button1_Click(object sender, EventArgs e)
{
SolidBrush b1 = new SolidBrush(Color.Blue);
SolidBrush b2 = new SolidBrush(Color.Red);
SolidBrush b3 = new SolidBrush(Color.LawnGreen);
Rectangle rect = new Rectangle(60, 10, 200, 200);
Pen p = new Pen(Color.Black);
graphics.DrawPie(p, rect, 0, d1);
graphics.FillPie(b1, rect, 0, d1);
graphics.DrawPie(p, rect, d1, d2);
graphics.FillPie(b2, rect, d1, d2);
graphics.DrawPie(p, rect, d1 + d2, d3);
graphics.FillPie(b3, rect, d1 + d2, d3);
comboBox1.SelectedIndex = 0;
label1.Text = "R_type (" + (d1 * 100 / 360).ToString() + "%)";
label2.Text = "I_type (" + (d2 * 100 / 360).ToString() + "%)";
label3.Text = "J_type (" + (d3 * 100 / 360).ToString() + "%)";
}
当我试图将Button1_click()方法中包含的代码复制到一个新的void方法时,只显示了带有百分比的面板,而没有显示图表。谢谢 以下是我在自己的代码中获取图形对象的代码片段:
Graphics g = CreateGraphics();
short margin = global::FrakoPlanner.NET.Properties.Settings.Default.Margin;
cellHeight = Convert.ToInt32(g.MeasureString("Font", this.TextFont).Height) + margin;
g.Dispose();
关键是,如果要在按钮单击处理程序中绘制,则需要创建图形对象。我几乎可以肯定,您没有意识到实际的问题 问题不在于它只在按钮的事件处理程序中工作。 这是一个地理(在处理器内部)的区别,这并不重要 问题在于执行这些绘图操作的时间 我假设“在按钮的事件处理程序之外”意味着在一个地方(可能是表单的构造函数)里面,它甚至在可能呈现之前就被调用了 简易解决方案答案(不包括任何见解)
- 只需在表单中添加一个计时器组件
- 为其
勾选事件创建事件处理程序
- 将其
属性设置为Enabled
true
- 将其
属性设置为。。说200(意思是毫秒)Interval
- 在步骤2创建的事件处理程序中编写绘图代码
- 以编程方式禁用事件处理程序内的计时器(在事件处理程序的顶部或底部)
- 阅读有关创建自定义控件(非用户控件)的信息
- 创建一个CustomControl并将其称为MyPieRenderer