Вот график, созданный на основе данных в наборе данных.
Мой набор данных — это данные, считанные из таблицы Sendrec. Есть несколько полей, таких как Id, Sendid (номер заказа), Sendtime (время записи) и Sendnum (в моем случае количество отправленных за единицу времени/пять минут)
. следующее:
public void draw (страница страницы, DataSet ds, int Tnum) {}
Страница используется для передачи страницы, которая ссылается на этот процесс, чтобы страница могла напрямую выводить сгенерированный график кривой клиенту в режиме JPG.
ds — извлеченный набор данных.
Tnum — это просто параметр, который я хочу здесь использовать. Я не хочу, чтобы этот класс подвергался воздействию процесса чтения, поэтому я напрямую беру общую сумму заказа и передаю ее ему.
использование системы;
использование System.Data;
использование System.Configuration;
использование System.Web;
использование System.Web.Security;
использование System.Web.UI;
использование System.Web.UI.WebControls
с использованием System.Web.UI.HtmlControls;
используя System.Drawing.Drawing2D;
использование System.Drawing.Imaging;
использование System.Drawing;
использование System.IO;
публичный класс imgdraw
{
публичный imgdraw()
{
}
public void draw (страница страницы, DataSet ds, int Tnum)
{
//Получаем количество записей
int count = ds.Tables[0].Rows.Count;
//Рассчитываем ширину диаграммы
int wd = 80 + 20 * (количество — 1);
//Установим минимальную ширину 800
если (wd < 800) wd = 800;
//Создаем растровый объект
Растровое изображение img = новое растровое изображение (wd, 400);
//Генерируем объект рисования
Графика g = Graphics.FromImage(img);
//Определяем черную кисть
Pen Bp = новая ручка (Цвет.Черный);
//Определяем красную кисть
Pen Rp = новое перо(Цвет.Красный);
//Определяем серебристо-серую кисть
Pen Sp = новая ручка(Цвет.Серебристый);
//Определяем шрифт заголовка
Шрифт Bfont = новый шрифт("Arial", 12, FontStyle.Bold);
//Определяем общий шрифт
Шрифт шрифта = новый шрифт («Arial», 6);
//Определяем шрифт большего размера
Шрифт Tfont = новый шрифт («Arial», 9);
//Рисуем цвет фона
g.DrawRectangle(new Pen(Color.White, 400), 0, 0, img.Width, img.Height);
//Определяем черную кисть перехода
Кисть LinearGradientBrush = new LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), Color.Black, Color.Black, 1.2F, true);
//Определяем синюю кисть перехода
LinearGradientBrush Bluebrush = new LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), Color.Blue, Color.Blue, 1.2F, true);
//Рисуем большой заголовок
g.DrawString(ds.Tables[0].Rows[0]["sendid"].ToString() + "Кривая статуса доставки заказа", Bfont, Brush, 40, 5);
//Получаем текущий объем отправки
целое число = 0;
for (int i = 0; i < count; i++)
{
nums+=Convert.ToInt32(ds.Tables[0].Rows[i]["sendnum"]);
}
//Рисуем информационный брифинг
string info="Время отправки заказа:"+ds.Tables[0].Rows[0]["sendtime".ToString()+" Время формирования кривой: "+DateTime.Now.ToString()+" Общая сумма заказа : "+Tnum.ToString()+" Текущая общая сумма отправленных: "+nums.ToString();
g.DrawString(информация, Tfont, Bluebrush, 40, 25);
//Рисуем рамку изображения
g.DrawRectangle(Bp, 0, 0, img.Width - 1, img.Height - 1
//Рисуем вертикальную координатную линию
);
for (int i = 0; i < count; i++)
{
g.DrawLine(Sp, 40+20 * i, 60, 40+20 * i, 360);
}
//Рисуем метки координат временной шкалы
for (int i = 0; i < count; i+=2)
{
строка st = Convert.ToDateTime(ds.Tables[0].Rows[i]["sendtime"]).ToString("чч:мм");
g.DrawString(st, шрифт, кисть, 30 + 20 * i, 370);
}
//Рисуем горизонтальную координатную линию
для (int я = 0; я <10; я++)
{
g.DrawLine(Sp, 40, 60+30*i, 40+20*(счет-1), 60+30*i);
int s = 2500 - 50 * i * 5;
//Рисуем метку координат оси суммы отправки
g.DrawString(s.ToString(), шрифт, кисть, 10, 60 + 30 * i);
}
//Рисуем вертикальную ось
g.DrawLine(Bp, 40, 55, 40, 360);
//Рисуем горизонтальную ось
g.DrawLine(Bp, 40, 360, 45 + 20 * (count - 1), 360
//Определяем точку поворота кривой
;
Точка[] p = новая точка[количество];
for (int i = 0; i < count; i++)
{
p[i].X = 40 + 20 * i;
p[i].Y = 360- Convert.ToInt32(ds.Tables[0].Rows[i]["sendnum"]) / 5*3/5;
}
//Рисуем кривую отправки
g.DrawLines(Rp, p);
for (int i = 0; i < count; i++)
{
//Отрисовываем сумму отправки точки записи отправки
g.DrawString(ds.Tables[0].Rows[i]["sendnum"].ToString(), шрифт, Bluebrush, p[i].X, p[i].Y - 10);
//Рисуем точку отправки записи
g.DrawRectangle(Rp, p[i].X - 1, p[i].Y - 1, 2, 2);
}
//Рисуем заголовок по вертикальным координатам
g.DrawString("Отправить сумму", Tfont, кисть, 5, 40);
//Рисуем заголовок по оси абсцисс
g.DrawString("Время отправки", Tfont, кисть, 40, 385);
//Сохраняем нарисованную картинку
Поток MemoryStream = новый MemoryStream();
img.Save(поток, ImageFormat.Jpeg);
//Вывод изображения
страница.Ответ.Очистить();
page.Response.ContentType = "изображение/jpeg";
)
;
}
Привет! Публикую это просто запись о том, как нарисовать картинку. Здесь еще много ошибок, надеюсь, вы дадите мне несколько советов.
http://www.cnblogs.com/aowind/archive/2006/11/23/569536.html