C#一些小知识点
1. 在Load时候由代码来做控件PictureBox,并且用代码将图片加载进去:
private void Form2_Load(object sender, EventArgs e) { DirectoryInfo dir = new DirectoryInfo(@"F:\image\car"); FileInfo[] files = dir.GetFiles("*.jpg"); foreach (FileInfo f in files) { //造PictureBox PictureBox pb = new PictureBox(); //加载图片 pb.Image = Image.FromFile(f.FullName); //设置图片框大小 pb.Size = new System.Drawing.Size(100, 80); //设置缩放 pb.SizeMode = PictureBoxSizeMode.Zoom; //加到流式布局控件中去 flowLayoutPanel1.Controls.Add(pb); //给图片框加上click事件 pb.Click +=pb_Click; } }
2. 关于事件,sender是指事件源,比如在PictureBox上加的点击事件,则事件源就是该PictureBox,sender是个object类型,所以要强转一下。E是事件数据,EventArgs是事件数据的基类。
private void pb_Click(object sender, EventArgs e) { picShow.Image = ((PictureBox)sender).Image; }
3. 代码加事件,去事件
pb.Click +=pb_Click; 去事件用”-=”,加完事件之后Tab键生成。
4. #region 这是自定义的工具函数
#region 这是自定义的工具函数 中间一般将自己写的工具函数(供其他函数调用的)包在中间,这样能使代码更清晰。 #endregion
5. 关闭程序
Application.Exit();是整个应用程序结束,比this.close()更直接。
This.close();是关闭窗口导致程序结束。
6. 在一个图片上面的指定位置写文字:
//加载图像 Image img = Image.FromFile(@"E:\cyl.jpg"); Graphics g = Graphics.FromImage(img); //写字 string s = "http://www.ITNBA.COM"; Font font = new System.Drawing.Font("隶书", 14, FontStyle.Italic); SolidBrush brush = new SolidBrush(Color.Blue); g.DrawString(s, font, brush, 10, 10); //保存 img.Save(@"E:\cyl0.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
7. 测定一个字符串的宽和高:
//测定字体的宽与高 SizeF size = g.MeasureString(s,font); size.Width是测量出的字符串的宽度 ssize.Height是测量出的字符串的高度
8. 在一个图片上画上另一个图片(加水印)。
//加载图像 Image img = Image.FromFile(@"E:\cyl.jpg");//目标图像 Image wm = Image.FromFile(@"E:\bbb.gif");//要加的水印 //取得画板 Graphics g = Graphics.FromImage(img); //画图像 g.DrawImage(wm, 10, 10); //保存图片 img.Save(@"E:\cyl2.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
9. 将图片放进数据库
//取出文本框中代号 string code = textBox1.Text; //将图片变为字节数组读入内存 FileStream stream = new FileStream(fileName, FileMode.Open); byte[] picture = new byte[stream.Length]; stream.Read(picture, 0, picture.Length); stream.Close(); //将图片的字节数组放进数据库存储 PictureTableAdapter adapter = new PictureTableAdapter(); adapter.AddPicture(code, picture);
10. 将图片从数据库取出
//从数据库取图片 MyDB.PictureDataTable table = new PictureTableAdapter().GetDataByCode(textBox1.Text); if (table.Rows.Count > 0) { //用数组接收 byte[] b = table[0].Pic; //将图片写入硬盘 FileStream stream = new FileStream(@"D:\test.jpg", FileMode.Create); stream.Write(b, 0, b.Length); stream.Close();