C#应用5——关闭时弹出提醒、GDI画饼图、chart画饼图

关闭程序时弹出提醒

private void frm_VisionRun_FromClosing(object sender,FormClosingEventArgs e)
{
	DialogResult result = MessageBox.Show("请确认方案是否已保存","保存",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
	if(result==DialogResult.OK)
	{
	  //点击OK后需要做的事情
	  //退出
	  Process.GetCurrentProcess().Kill();
	}
	else
	{
	 e.Cancel = true;
	}
}

用GDI画饼图

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public int num = 0;
        public int ok = 0;
        private void Form1_Load(object sender, EventArgs e)
        {
            BarMap();
        }
        private void BitMap()//饼状图
        {

            int[] saleNum = { 3,ok };
            int sum = 0, threeNum = 0, fourNum = 0, fiveNum = 0;
            for (int i = 0; i < saleNum.Length; i++)
            {
                sum += saleNum[i];
                if (i == 0)
                    threeNum = saleNum[0];
                else if (i == 1)
                    fourNum = saleNum[1];
                
            }

            int height = pictureBox1.Height, width = pictureBox1.Width;
            Bitmap bitmap = new Bitmap(width, height);
            Graphics g = Graphics.FromImage(bitmap);
            g.Clear(Color.White);
            Pen pen1 = new Pen(Color.Red);
            Brush brush1 = new SolidBrush(Color.PowderBlue);
            Brush brush2 = new SolidBrush(Color.Blue);
            Brush brush3 = new SolidBrush(Color.Wheat);
            Brush brush4 = new SolidBrush(Color.Orange);

            Font font1 = new Font("Couriter New", 16, FontStyle.Bold);
            Font font2 = new Font("Couriter New", 10);
            g.FillRectangle(brush1, 0, 0, width, height);
            g.DrawString("每月良率饼状图", font1, brush2, new Point(70, 20));
            int piex = 100, piey = 60, piew = 200, pieh = 200;
            float angle1 = Convert.ToSingle((360 / Convert.ToSingle(sum)) * Convert.ToSingle(threeNum));
            float angle2 = Convert.ToSingle((360 / Convert.ToSingle(sum)) * Convert.ToSingle(fourNum));
            //float angle3 = Convert.ToSingle((360 / Convert.ToSingle(sum)) * Convert.ToSingle(fiveNum));
            g.FillPie(brush2, piex, piey, piew, pieh, 0, angle1);
            g.FillPie(brush3, piex, piey, piew, pieh, angle1, angle2);
            //g.FillPie(brush4, piex, piey, piew, pieh, angle1 + angle2, angle3);
            g.DrawRectangle(pen1, 50, 300, 310, 130);


            g.FillRectangle(brush2, 90, 320, 20, 10);
            g.DrawString(string.Format("OK品占比:{0:P2}", Convert.ToSingle(threeNum) / Convert.ToSingle(sum)), font2, brush2, 120, 320);
            g.FillRectangle(brush3, 90, 360, 20, 10);
            g.DrawString(string.Format("NG品占比:{0:P2}", Convert.ToSingle(fourNum) / Convert.ToSingle(sum)), font2, brush2, 120, 360);
            g.FillRectangle(brush4, 90, 400, 20, 10);
            g.DrawString(string.Format("总数:{0}", Convert.ToSingle(sum)), font2, brush2, 120, 400);

            this.groupBox1.Text = "饼状图";
            this.pictureBox1.Width = bitmap.Width;
            this.pictureBox1.Height = bitmap.Height;
            this.pictureBox1.BackgroundImage = bitmap;

        }
        private void BarMap()//柱状图
        {
            int[] saleNum = { 300, 500, 400 };
            int sum = saleNum[0] + saleNum[1] + saleNum[2];
            float[] Y_Num ={ Convert.ToSingle(saleNum[0]) / Convert.ToSingle(sum),Convert.ToSingle(saleNum[1]) / Convert.ToSingle(sum),
                    Convert.ToSingle(saleNum[2]) / Convert.ToSingle(sum) };
            int height = pictureBox1.Height, width = pictureBox1.Width;
            Bitmap image = new Bitmap(width, height);
            //创建Graphics类对象
            Graphics g = Graphics.FromImage(image);
            try
            {
                //清空图片背景色
                g.Clear(Color.White);
                Font font = new Font("Arial", 10, FontStyle.Regular);
                Font font1 = new Font("宋体", 20, FontStyle.Bold);
                LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.BlueViolet, 1.2f, true);

                Font font2 = new System.Drawing.Font("Arial", 10, FontStyle.Bold);
                SolidBrush mybrush = new SolidBrush(Color.Red);
                SolidBrush mybrush2 = new SolidBrush(Color.Green);
                Pen mypen = new Pen(brush, 1);
                //绘制线条
                //绘制横向线条
                int x = 100;
                Pen mypen1 = new Pen(Color.Blue, 2);
                x = 60;
                g.DrawLine(mypen1, x, 0, x, 300);

                //绘制纵向线条
                int y = 0;
                for (int i = 0; i < 11; i++)
                {
                    g.DrawLine(mypen, 45, y, 60, y);
                    y = y + 30;
                }
                g.DrawLine(mypen1, 60, y - 30, 620, y - 30);

                //x轴
                String[] n = { "3月份", "4月份", "5月份" };
                x = 100;
                for (int i = 0; i < 3; i++)
                {
                    g.DrawString(n[i].ToString(), font, Brushes.Blue, x, 300); //设置文字内容及输出位置

                    Console.WriteLine(300 - Y_Num[i] * 100 * 3);
                    g.FillRectangle(mybrush, x, 300 - Y_Num[i] * 100 * 3, 20, Y_Num[i] * 100 * 3);
                    g.DrawString(Y_Num[i].ToString(), font2, Brushes.Green, x, 300 - Y_Num[i] * 100 * 3 - 15);

                    x = x + 100;
                }

                //y轴
                String[] m = { "0", "0.10", "0.20", "0.30", "0.40", "0.50", "0.60", "0.70", " 0.80", " 0.90", " 1.00" };
                y = 0;
                for (int i = 10; i >= 0; i--)
                {
                    g.DrawString(m[i].ToString(), font, Brushes.Blue, 20, y); //设置文字内容及输出位置
                    y = y + 30;
                }
                //绘制标识
                Font font3 = new System.Drawing.Font("Arial", 10, FontStyle.Regular);
                g.DrawRectangle(new Pen(Brushes.Blue), 170, 390, 250, 50); //绘制范围框
                g.FillRectangle(Brushes.Red, 200, 410, 20, 10); //绘制小矩形
                g.DrawString("月销量占比", font3, Brushes.Red, 292, 408);
                this.button1.Text = "查看饼状图";
                this.groupBox1.Text = "柱状图";
                this.pictureBox1.Width = image.Width;
                this.pictureBox1.Height = image.Height;
                this.pictureBox1.BackgroundImage = image;
            }
            catch { }

        }
        private void Button1_Click(object sender, EventArgs e)
        {
            num++;
            ok++;
            BitMap();
            this.button1.Visible = true;//隐藏button
        }


    }
}

用自带控件chart绘制饼图

要在右上角添加LegendText的类型时要在chart1—>Legends---->CustomItems中添加要添加的内容,并修改Name选项(总数、OK数);修改color属性,改变方框的颜色。

public void setPie(double num)
        {
            List<string> xData = new List<string>() { "OK", "NG" };
            List<double> yData = new List<double>() { num, 100 - num };

            chart1.Series[0].Label = "#VALX;#PERCENT{P2}";    //百分比显示

            chart1.Series[0].XValueType = System.Windows.Forms.DataVisualization.Charting.ChartValueType.String;  //x轴名称用字符串显示

            chart1.Series[0]["PieLabelStyle"] = "Inside";

            chart1.Series[0]["PieLineColor"] = "Black";
            System.Threading.Thread.Sleep(10);
            DateTime st5 = DateTime.Now;
            this.textBox2.AppendText(st5 + "  显示数据图 " + Environment.NewLine);
            chart1.Series[0].Points.DataBindXY(xData, yData);
            chart1.Series[0].Points[0].Color = Color.Lime;
            chart1.Series[0].Points[1].Color = Color.Red;
             
            chart1.Legends[0].CustomItems[0].Name = "总数:"+ NUM.ToString()+ " 个";     //右上角添加的LegendText类型
            chart1.Legends[0].CustomItems[1].Name = "OK数:"+ OK.ToString()+ " 个";//右上角添加的LegendText类型
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值