Как оптимизировать размер гистограммы?

208
04 марта 2018, 21:16

Код делает гистограмму для загруженой картинки. Проблема в том, что не могу дойти до того как оптимизировать размер всех стобцов на этой самой гистограмме(т.е. что-бы хорошо были видны как маленькие столбцы, так и большие). Пытался вычислить найбольшее значение на каждом уровне, а потом поделить на это значение R,G,B, но это успехов не принесло. Подскажите в каком направлении нужно работать

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

namespace APO
{
    public partial class Form1 : Form
    {
         public Form1()
         {
             InitializeComponent();
             chart1.Series.Add("R"); // w Form1()
             chart1.Series.Add("G");
             chart1.Series.Add("B");
             chart1.Series.RemoveAt(0);
         }
        private void btClose_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void openButton_Click(object sender, EventArgs e)
        {
            using (OpenFileDialog openFile = new OpenFileDialog())
        {
            openFile.Title = "Open Image";
            if (openFile.ShowDialog() == DialogResult.OK)
            {
                pictureBox1.ImageLocation = openFile.FileName;
                this.pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
            }
            Bitmap bmp = new Bitmap(openFile.FileName);
            int width = 768, height = 600;
            Bitmap barChart = null;
            barChart = new Bitmap(width, height);
            double[] R = new double[256];
            double[] G = new double[256];
            double[] B = new double[256];
            int i, j;
            Color color;
            double max = 0;
            for (i = 0; i < bmp.Width; ++i)
            {
                for (j = 0; j < bmp.Height; ++j)
                {
                    color = bmp.GetPixel(i, j);
                    ++R[color.R];
                    ++G[color.G];
                    ++B[color.B];
                }
            }
            max = Help.getMaxim(R, G, B);
            chart1.Series["R"].Points.Clear();
            chart1.Series["G"].Points.Clear();
            chart1.Series["B"].Points.Clear();
            for (i=0;i < 256; ++i)
            {
                chart1.Series["R"].Points.AddXY(i, R[i]);
                chart1.Series["G"].Points.AddXY(i, G[i]);
                chart1.Series["B"].Points.AddXY(i, B[i]);
            }
        }
    }
}
}
READ ALSO
Встраивание библиотеки в приложени

Встраивание библиотеки в приложени

Здравствуйте, есть библиотека для работы с ru-captcha, если библиотека находиться рядом с исполняемым файлом - проблем нетНо если библиотеки рядом...

164
VK API. Сохранение фотографий

VK API. Сохранение фотографий

Всем приветПомогите разобраться с вк API

296
Переключение между вкладками браузера

Переключение между вкладками браузера

Пишу приложение А на AngularJSПри клике на кнопку открывается новая вкладка с другим приложением Б

333
В проекте React как передать данные из одного .js файла на другой .js файл

В проекте React как передать данные из одного .js файла на другой .js файл

Это мой проект https://codesandboxio/s/kol9v65w2v React начал изучать недавно

219