Berikut adalah grafik yang dihasilkan dari data di Dataset.
Dataset saya adalah data yang dibaca dari tabel Sendrec. Ada beberapa field seperti Id, Sendid (nomor pesanan), Sendtime (waktu perekaman), dan Sendnum (jumlah yang dikirim per satuan waktu/lima menit dalam kasus saya)
. sebagai berikut:
public void draw(Halaman halaman,DataSet ds,int Tnum){}
Halaman tersebut digunakan untuk meneruskan halaman yang mereferensikan proses ini, sehingga halaman tersebut dapat langsung menampilkan grafik kurva yang dihasilkan ke klien dalam mode JPG.
ds adalah kumpulan data yang diekstraksi.
Tnum hanyalah parameter yang ingin saya gunakan di sini. Saya tidak ingin kelas ini terkena proses membaca, jadi saya langsung mengambil jumlah total pesanan dan meneruskannya.
menggunakan Sistem;
menggunakan Sistem.Data;
menggunakan Sistem.Konfigurasi;
menggunakan Sistem.Web;
menggunakan Sistem.Web.Keamanan;
menggunakan Sistem.Web.UI;
menggunakan System.Web.UI.WebControls;
menggunakan System.Web.UI.HtmlControls;
menggunakan System.Drawing.Drawing2D;
menggunakan System.Drawing.Imaging;
menggunakan Sistem.Gambar;
menggunakan Sistem.IO;
imgdraw kelas publik
{
gambar img publik()
{
}
public void draw(Halaman halaman,DataSet ds,int Tnum)
{
//Dapatkan jumlah record
int hitungan = ds.Tabel[0].Baris.Hitungan;
//Hitung lebar grafik
int wd = 80 + 20 * (hitungan - 1);
//Setel lebar minimum menjadi 800
jika (wd <800) wd = 800;
//Hasilkan objek Bitmap
Bitmap img=Bitmap baru(wd,400);
//Hasilkan objek gambar
Grafik g = Grafik.FromImage(img);
//Definisikan kuas hitam
Pena Bp = Pena baru (Warna. Hitam);
//Definisikan kuas merah
Pulpen Rp = Pulpen baru(Warna.Merah);
//Definisikan kuas abu-abu perak
Pena Sp = Pena baru (Warna. Perak);
//Tentukan font judul
Font Bfont = Font baru("Arial", 12, FontStyle.Bold);
//Tentukan font umum
Font font = Font baru("Arial", 6);
//Tentukan font yang lebih besar
Font Tfont = Font baru("Arial", 9);
//Gambar warna latar belakang
g.DrawRectangle(Pena baru(Warna.Putih, 400), 0, 0, img.Lebar, img.Tinggi);
//Definisikan kuas transisi hitam
Kuas LinearGradientBrush = new LinearGradientBrush(Persegi Panjang baru(0, 0, img.Width, img.Height), Color.Black, Color.Black, 1.2F, true);
//Definisikan kuas transisi biru
LinearGradientBrush Bluebrush = new LinearGradientBrush(persegi panjang baru(0, 0, img.Width, img.Height), Color.Blue, Color.Blue, 1.2F, true);
//Gambarkan judul besarnya
g.DrawString(ds.Tables[0].Rows[0]["sendid"].ToString() + "Kurva status pengiriman pesanan", Bfont, brush, 40, 5);
//Dapatkan volume pengiriman saat ini
int angka=0;
untuk (int i = 0; i < hitung; i++)
{
nums+=Convert.ToInt32(ds.Tables[0].Rows[i]["sendnum"]);
}
//Gambarkan pengarahan informasi
string info="Waktu pengiriman pesanan:"+ds.Tables[0].Rows[0]["sendtime"].ToString()+" Waktu pembuatan kurva: "+DateTime.Now.ToString()+" Jumlah total pesanan : "+Tnum.ToString()+" Jumlah total yang dikirim saat ini: "+nums.ToString();
g.DrawString(info, Tfont, Bluebrush, 40, 25);
//Gambar batas gambar
g.DrawRectangle(Bp, 0, 0, img.Width - 1, img.Height - 1);
//Gambar garis koordinat vertikal
untuk (int i = 0; i < hitung; i++)
{
g.DrawLine(Sp, 40+20 * i, 60, 40+20 * i, 360);
}
//Gambar label koordinat garis waktu
untuk (int i = 0; i < hitungan; i+=2)
{
string st = Convert.ToDateTime(ds.Tables[0].Rows[i]["sendtime"]).ToString("hh:mm");
g.DrawString(st, font, kuas, 30 + 20 * i, 370);
}
//Gambarkan garis koordinat horizontal
untuk (int saya = 0; saya < 10; saya++)
{
g.DrawLine(Sp, 40, 60+30*i, 40+20*(hitungan-1), 60+30*i);
int s = 2500 - 50*i*5;
//Gambarkan label koordinat sumbu jumlah pengiriman
g.DrawString(s.ToString(), font, kuas, 10, 60 + 30 * i);
}
//Gambar sumbu vertikal
g.DrawLine(Bp, 40, 55, 40, 360);
//Gambar sumbu horizontal
g.DrawLine(Bp, 40, 360, 45 + 20 * (hitungan - 1), 360);
//Tentukan titik balik kurva
Poin[] p = Poin baru[hitungan];
untuk (int i = 0; i < hitung; i++)
{
p[i].X = 40 + 20 * saya;
p[i].Y = 360- Convert.ToInt32(ds.Tables[0].Rows[i]["sendnum"]) / 5*3/5;
}
//Gambar kurva pengiriman
g.DrawLines(Rp, p);
untuk (int i = 0; i < hitung; i++)
{
//Menarik jumlah pengiriman dari titik catatan pengiriman
g.DrawString(ds.Tables[0].Rows[i]["sendnum"].ToString(), font, Bluebrush, p[i].X, p[i].Y - 10);
//Gambarkan titik rekaman pengiriman
g.DrawRectangle(Rp, p[i].X - 1, p[i].Y - 1, 2, 2);
}
//Gambar judul koordinat vertikal
g.DrawString("Jumlah Kirim", Tfont, kuas, 5, 40);
//Gambarlah judul absisnya
g.DrawString("Waktu Kirim", Tfont, kuas, 40, 385);
//Simpan gambar yang diambil
Aliran MemoryStream = MemoryStream baru();
img.Simpan(aliran, ImageFormat.Jpeg);
//Keluaran gambar
halaman.Respon.Hapus();
halaman.Response.ContentType = "gambar/jpeg";
halaman.Respon.BinaryWrite(stream.ToArray())
;
}
Hai! Posting ini hanya sekedar catatan cara menggambar. Masih banyak kesalahan disini, saya harap anda bisa memberi saya saran.
http://www.cnblogs.com/aowind/archive/2006/11/23/569536.html