实例介绍
【实例简介】
【实例截图】
【核心代码】
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.Data.SqlClient;
namespace Case06_11
{
public partial class Form1 : Form
{
private string connectString = "server=.;Trusted_Connection=true;database=SQL_Data";
public Form1()
{
InitializeComponent();
}
private void CreateImage(int ID)
{
int height = 440, width = 600;
System.Drawing.Bitmap image = new System.Drawing.Bitmap(width, height);
Graphics g = Graphics.FromImage(image);
try
{
//清空图片背景色
g.Clear(Color.White);
Font font = new System.Drawing.Font("Arial", 9, FontStyle.Regular);
Font font1 = new System.Drawing.Font("宋体", 12, FontStyle.Regular);
Font font2 = new System.Drawing.Font("Arial", 8, FontStyle.Regular);
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.Blue, 1.2f, true);
g.FillRectangle(Brushes.AliceBlue, 0, 0, width, height);
Brush brush1 = new SolidBrush(Color.Blue);
Brush brush2 = new SolidBrush(Color.SaddleBrown);
string str = "SELECT * FROM 职工统计 WHERE Years=" ID "";
SqlConnection Con = new SqlConnection(connectString);
Con.Open();
SqlCommand Com = new SqlCommand(str, Con);
SqlDataReader dr = Com.ExecuteReader();
dr.Read();
if (dr.HasRows)
{
g.DrawString("" ID "年公司内部人员统计表", font1, brush1, new PointF(160, 30));
}
dr.Close();
//画图片的边框线
g.DrawRectangle(new Pen(Color.Blue), 0, 0, image.Width - 1, image.Height - 1);
Pen mypen = new Pen(brush, 1);
Pen mypen2 = new Pen(Color.Red, 2);
//绘制线条
//绘制纵向线条
int x = 60;
for (int i = 0; i < 12; i )
{
g.DrawLine(mypen, x, 80, x, 340);
x = x 40;
}
Pen mypen1 = new Pen(Color.Blue, 2);
g.DrawLine(mypen1, x - 480, 80, x - 480, 340);
//绘制横向线条
int y = 106;
for (int i = 0; i < 9; i )
{
g.DrawLine(mypen, 60, y, 540, y);
y = y 26;
}
g.DrawLine(mypen1, 60, y, 540, y);
//x轴
String[] n = {" 一月", " 二月", " 三月", " 四月", " 五月", " 六月", " 七月",
" 八月", " 九月", " 十月", "十一月", "十二月"};
x = 35;
for (int i = 0; i < 12; i )
{
g.DrawString(n[i].ToString(), font, Brushes.Red, x, 348); //设置文字内容及输出位置
x = x 40;
}
//y轴
String[] m = {"900人", " 800人", " 700人", "600人", " 500人", " 400人", " 300人", " 200人",
" 100人"};
y = 100;
for (int i = 0; i < 9; i )
{
g.DrawString(m[i].ToString(), font, Brushes.Red, 10, y); //设置文字内容及输出位置
y = y 26;
}
int[] Count1 = new int[12];
int[] Count2 = new int[12];
string[] NumChr = new string[12];
string cmdtxt2 = "SELECT * FROM 职工统计 WHERE Years=" ID "";
SqlCommand Com1 = new SqlCommand(cmdtxt2, Con);
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = Com1;
DataSet ds = new DataSet();
da.Fill(ds);
int j = 0;
for (int i = 0; i < 12; i )
{
NumChr[i] = ds.Tables[0].Rows[0][i 1].ToString();
}
for (j = 0; j < 12; j )
{
Count1[j] = Convert.ToInt32(NumChr[j].Split('|')[0].ToString()) * 26 / 100;
}
for (int k = 0; k < 12; k )
{
Count2[k] = Convert.ToInt32(NumChr[k].Split('|')[1].ToString()) * 26 / 100;
}
//显示折线效果
SolidBrush mybrush = new SolidBrush(Color.Red);
Point[] points1 = new Point[12];
points1[0].X = 60; points1[0].Y = 340 - Count1[0];
points1[1].X = 100; points1[1].Y = 340 - Count1[1];
points1[2].X = 140; points1[2].Y = 340 - Count1[2];
points1[3].X = 180; points1[3].Y = 340 - Count1[3];
points1[4].X = 220; points1[4].Y = 340 - Count1[4];
points1[5].X = 260; points1[5].Y = 340 - Count1[5];
points1[6].X = 300; points1[6].Y = 340 - Count1[6];
points1[7].X = 340; points1[7].Y = 340 - Count1[7];
points1[8].X = 380; points1[8].Y = 340 - Count1[8];
points1[9].X = 420; points1[9].Y = 340 - Count1[9];
points1[10].X = 460; points1[10].Y = 340 - Count1[10];
points1[11].X = 500; points1[11].Y = 340 - Count1[11];
g.DrawLines(mypen2, points1); //绘制折线
Pen mypen3 = new Pen(Color.Black, 2);
Point[] points2 = new Point[12];
points2[0].X = 60; points2[0].Y = 340 - Count2[0];
points2[1].X = 100; points2[1].Y = 340 - Count2[1];
points2[2].X = 140; points2[2].Y = 340 - Count2[2];
points2[3].X = 180; points2[3].Y = 340 - Count2[3];
points2[4].X = 220; points2[4].Y = 340 - Count2[4];
points2[5].X = 260; points2[5].Y = 340 - Count2[5];
points2[6].X = 300; points2[6].Y = 340 - Count2[6];
points2[7].X = 340; points2[7].Y = 340 - Count2[7];
points2[8].X = 380; points2[8].Y = 340 - Count2[8];
points2[9].X = 420; points2[9].Y = 340 - Count2[9];
points2[10].X = 460; points2[10].Y = 340 - Count2[10];
points2[11].X = 500; points2[11].Y = 340 - Count2[11];
g.DrawLines(mypen3, points2); //绘制折线
//绘制标识
g.DrawRectangle(new Pen(Brushes.Red), 150, 370, 250, 50); //绘制范围框
g.FillRectangle(Brushes.Red, 250, 380, 20, 10); //绘制小矩形
g.DrawString("试用员工人数", font2, Brushes.Red, 270, 380);
g.FillRectangle(Brushes.Black, 250, 400, 20, 10);
g.DrawString("正试员工人数", font2, Brushes.Black, 270, 400);
this.panel1.BackgroundImage = image;
}
catch
{
}
}
private void Form1_Load(object sender, EventArgs e)
{
using (SqlConnection con = new SqlConnection(connectString))
{
SqlDataAdapter da = new SqlDataAdapter("select Years from 职工统计", con);
DataTable dt = new DataTable();
da.Fill(dt);
this.comboBox1.DataSource = dt.DefaultView;
this.comboBox1.DisplayMember = "Years";
this.comboBox1.ValueMember = "Years";
}
}
private void button1_Click(object sender, EventArgs e)
{
this.CreateImage(Convert.ToInt32(this.comboBox1.Text));
}
private void button2_Click(object sender, EventArgs e)
{
this.Close();
Application.Exit();
}
}
}
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论