20 / 19 / 4
Регистрация: 22.03.2018
Сообщений: 701
1
.NET 4.x

Создание круговой диаграммы брать данные для диаграммы из dataGridView1 ?

11.10.2019, 23:19. Показов 2197. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
 
namespace Graph
{
    //<summary>
    //Нарисовать круговую диаграмму, используя данную информацию.
    //</summary>
    public partial class Form1 : Form
    {
        public Bitmap Draws(Color bgCol, int width, int height,
          decimal[] vals)
        {
            // Создаем новый образ и стираем фон
            Bitmap mybit = new Bitmap(width, height, PixelFormat.Format32bppArgb);
            Graphics graphics = Graphics.FromImage(mybit);
            SolidBrush brush = new SolidBrush(bgCol);
            graphics.FillRectangle(brush, 0, 0, width, height);
            brush.Dispose();
 
            // Создаем кисти для окрашивания на круговой диаграмме
            SolidBrush[] brush2 = new SolidBrush[10];
            brush2[0] = new SolidBrush(Color.Yellow);
            brush2[1] = new SolidBrush(Color.Green);
            brush2[2] = new SolidBrush(Color.Blue);
            brush2[3] = new SolidBrush(Color.Cyan);
            brush2[4] = new SolidBrush(Color.Magenta);
            brush2[5] = new SolidBrush(Color.Red);
            brush2[6] = new SolidBrush(Color.Black);
            brush2[7] = new SolidBrush(Color.Gray);
            brush2[8] = new SolidBrush(Color.Maroon);
            brush2[9] = new SolidBrush(Color.LightBlue);
 
            // Сумма для получения общего
            decimal all = 0.0m;
            foreach (decimal val in vals)
                all += val;
 
            // Рисуем круговую диаграмму
            float startZ = 0.0f;
            float endZ = 0.0f;
            decimal current = 0.0m;
            for (int i = 0; i < vals.Length; i++)
            {
                current += vals[i];
                startZ = endZ;
                endZ = (float)(current / all) * 360.0f;
                graphics.FillPie(brush2[i % 10], 0.0f, 0.0f, width,height, startZ, endZ - startZ);
            }
 
            // Очищаем ресурсы кисти
            foreach (SolidBrush cleanBrush in brush2)
                cleanBrush.Dispose();
 
            return mybit;
        }
 
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            
        }
 
        private void Form1_Paint_1(object sender, PaintEventArgs e)
        {
            Color myColor = Color.FromArgb(255, 255, 255);//Задаем белый цвет для фона
              decimal[] vals = 
                { 
                   Convert.ToDecimal(dataGridView1.Rows[0].Cells[5].Value),
                   Convert.ToDecimal(dataGridView1.Rows[1].Cells[5].Value),
                   Convert.ToDecimal(dataGridView1.Rows[2].Cells[5].Value),
                };//Массив значений, числа могут быть любыми, не обязательно в сумме давать 100
            Bitmap myBitmap = Draws(myColor, 300, 300, vals);//Создаем картинку
            Graphics g = e.Graphics;
            g.DrawImage(myBitmap, 5, 5); //Выводим круговую диаграмму на экран в нужных координатах
        }
    }
}
Проблема в том что если я добавлю новую запись в dataGridView1 то в диаграмме не видно следушей облости как мне сделать так что бы она была видна и если даже я много строк добавлю новых запесей верней в таблицу то в курговой диагрмме не будет видно.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2019, 23:19
Ответы с готовыми решениями:

Создание круговой диаграммы
Здравствуйте. Я написала код, все необходимое, но почему-то программа не работает. Я ввожу...

Создание круговой диаграммы
привет всем.народ подскажите какой прогой можно забабахать нечто подобное(нужно то что справа...

Создание круговой диаграммы
Как сделать круговую диаграмму, есть пример с гистограммой, но а как построить круговую.Вот код: ...

Создание круговой кольцевой диаграммы!
Всем добрый вечер! Подскажите пожалуйста-можно ли создать круговую кольцевую диаграмму силами...

1
20 / 19 / 4
Регистрация: 22.03.2018
Сообщений: 701
12.10.2019, 15:28  [ТС] 2
Ответ:
C#
1
2
3
4
5
6
7
8
9
10
11
      int N = dataGridView13.Rows.Count;
            
            decimal[] vals = new decimal[N];
            Color myColor = Color.FromArgb(255, 255, 255);//Задаем белый цвет для фона
            for (int i = 0; i < vals.Length; i++)
            {               
                 vals[i] = Convert.ToDecimal(dataGridView13.Rows[i].Cells[5].Value);
                 Bitmap myBitmap = Draws(myColor, 300, 300, vals);//Создаем картинку
                 Graphics g = e.Graphics;
                 g.DrawImage(myBitmap, 5, 5); //Выводим круговую диаграмму на экран в нужных координатах  
            }
0
12.10.2019, 15:28
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2019, 15:28
Помогаю со студенческими работами здесь

Создание круговой диаграммы в html
Помогите пожалуйста. Необходимо было создать в EXCEL круговую диаграмму с таблицей данных, а потом...

Создание круговой диаграммы с помощью Canvas
Здравствуйте. Помогите пожалуйста создать круговую диаграмму с помощью Canvas. Я искал в Google, но...

Создание круговой диаграммы с помощью Canvas
Здравствуйте. Помогите пожалуйста создать круговую диаграмму с помощью Canvas. Я искал в Google, но...

Создание круговой диаграммы из базы данных
Делаю дипломную работу. Есть база данных техники. Виды техники: ПК, ноутбук, планшет, принтер....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru