【问题标题】:Use Grapgics without button click无需单击按钮即可使用图形
【发布时间】:2015-04-15 09:37:48
【问题描述】:

我有一个表格,其中我用饼图说明了三种类型的汇编命令(R、I、J)的百分比。为此,我正在使用图形库。到目前为止,我的应用程序在单击按钮后显示图表和百分比 foreach 命令。我需要的是在不点击按钮的情况下做到这一点。我尝试了一些替代方案,但没有任何结果。只有百分比显示,饼图没有显示,直到我按下按钮。我的一些与 button_click 一起使用的初始代码以及我的表单图片如下所示。 有什么帮助吗??

    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 方法时,只显示了带有百分比的面板,但没有显示图表。谢谢!

【问题讨论】:

    标签: c# asp.net .net visual-studio-2010


    【解决方案1】:

    以下是我在自己的代码中获取图形对象的 sn-p:

    Graphics g = CreateGraphics();
    short margin = global::FrakoPlanner.NET.Properties.Settings.Default.Margin;
                    cellHeight = Convert.ToInt32(g.MeasureString("Font", this.TextFont).Height) + margin;
    g.Dispose();
    

    关键是如果你想在按钮点击处理程序中绘制,你需要创建一个图形对象。

    【讨论】:

      【解决方案2】:

      我几乎可以肯定你没有意识到你的实际问题。

      问题不在于它只能在按钮的事件处理程序中工作。 这是一个不重要的地理(处理程序内部)差异化因素。

      问题在于执行这些绘图操作的时间。

      我假设“在按钮的事件处理程序之外”是指在一个地方(可能是表单的构造函数)内部,它甚至可以在渲染之前被调用。

      简单的答案(不包括任何见解)

      • 只需在表单中添加一个 Timer 组件
      • 为其Tick 事件创建一个事件处理程序
      • 将其Enabled 属性设置为true
      • 将其 Interval 属性设置为 .. 说 200(表示毫秒)
      • 在第 2 步创建的事件处理程序中编写您的绘图代码
      • 以编程方式禁用事件处理程序内的计时器(在事件处理程序的顶部或底部)

      健康解决方案

      • 阅读有关创建自定义控件(而非用户控件)的信息。
      • 创建一个 CustomControl 并将其命名为 MyPieRenderer

      【讨论】:

        猜你喜欢
        • 2017-09-29
        • 2020-12-31
        • 1970-01-01
        • 2023-03-14
        • 1970-01-01
        • 2013-05-29
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        相关资源
        最近更新 更多