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();
时间: 2024-12-20 01:10:04

C#一些小知识点的相关文章

记录神经网络中一些小知识点

记录神经网络中一些小知识点 1 Caffe中的blob维度 Caffe中的blob具有4个维度,分别是num,channel,width和height: 其中我们在定义各个网络层时,常用到的一个参数numout,就是指定的channel: 比如说,维度为1*3*5*5的数据输入网络(即每次输入一张5*5大小的3通道图),经过一个stride为2,pad为1,kernel为2,numout为2的卷积层后,维度就变成了1*2*3*3: 假如输入有n个通道,计算时,caffe就会对应产生n个filte

C++ 小知识点 WINAPI

int WINAPI WINMain 中,WINAPI含义 网友给出回答:在windef.h头文件中有如下定义#define WINAPI      __stdcall#define APIENTRY    WINAPIVC有两种函数调用方式 一种是__stdcall,另一种是__cdecl函数的调用方式有两种一种是PASCAL调用方式,另一种是C调用方式使用PASCAL调用方式,函数在返回到调用者之前将参数从栈中删除使用C调用方式,参数的删除是调用者完成的WinMain函数是由系统调用的,Wi

0607am抽象类&接口&析构方法&tostring&小知识点

/*class ren{ public static $color;//静态 static function () { ren::$color; self::$color;//self只能写在类里面,代表这分类 }} */ //不能实例化的类:抽象类abstract class Animal //关键字abstract{ public $dong; public $jiao; function chi() { } function shui() { }}class Ren extends Ani

初学MySQL中的一些小知识点

写在前面,小弟初用博客记录学习路上的一点点小知识点,其中可能有个人理解方面的误差,或不明白的地方.希望各位大牛纠正指导,小弟感激不尽!这并不是什么帮助别人解决问题的文章,只是小弟将学习到的内容一一写在博客上,这样方便以后复习,还恳请大家勿喷.. 一.进入MySQL客户端 1.客户端可以通过.../MySQL/bin目录下的sql.exe运行客户端. 1.1:访问方式一: -u root -p /*可以直接在这段代码的后面添加密码,也可以按回车后再输入密码*/ 1.1:访问方式二: --host

私人定制javascript中数组小知识点(Only For Me)

先上笑话,1.刚看到一个游泳的,想起公司组织去三亚旅游,老板跳海里,各种挣扎,捞上来老板第一句话:我记得我会游泳的啊. 2.媳妇说:老公对不起,我把你新买的自行车撞散架了! 老公:没事宝贝,你若安好,便是晴天! 媳妇说:老公你太有诗意了. 老公:滚犊子,安不好我整死你! 数组的概念 javascript数组是值得有序集合,不过它实属一个javascript对象的特殊形式,这是一个很重点的定性. 创建数组 1.var a=new Array();//等同于[] 2.var a=new Array(

js中关于value的一个小知识点(value既是属性也是变量)

今天在学习input的value值时,发现这么一个小知识点,以前理解不太透彻. [1]以下这种情况,是常见的情况,会弹出“测试内容” <input type="button" value="测试内容" onclick = "alert(value)"> [2]心想,这种情况下value找不到,作用域链应该到document了,应该弹出“123",但情况是弹出空 <script> var value=123; &l

琐碎的小知识点

一.asp.net 1.点击Repeater中的LinkButton,获取当中label中的值:     Label lblName = ((LinkButton )sender).Parent.FindControl("lblName") as Label ;或者在gridView中,添加按钮列ButtonFlied并转化为模板时,设置LinkButton的.CommandArgument为绑定值,再根据 string n= ((LinkButton)sender).CommandA

一个关于echo的小知识点

一个关于echo的小知识点     echo一个布尔值时,如果是true,输出1,而如果是false,将什么都不输出! 网上搜的一个解释: 对于数字类型来说,false 确实 是 0, 而对string来说,false是 空,虽然数字的0也等于字符串的空,但是不能说 bool 转换 string 以后就是 0: var_dump((int)false);var_dump((string)false);

复习正则表达式时的一个小知识点

复习正则表达式时的一个小知识点     当分组后,若要引用此小组内容可以有两种方式 1:用 ${1} 2:用 \1 两者效果是一样的

小知识点日志(2014-10-22~2015-4-7)

上一篇 小知识点日志(2013-6-24~2014-10-11) 2014-10-22 17:51:46 1.函数命名:使用 LayerObjectOperation的命名方法,例如SlotFileRead.如果是面向对象的,通常是Layer字段在类名里表示了,而ObjectOperation通常表示成OperationObject,例如" CSlot slot; slot.readFile(); " 2.svn bug 3.mac实用工具:dash alfred 4.xcode Pe