C# GDI+编程(一)

2021-05-05 18:33

阅读:469

标签:send   private   bsp   窗口   中间   res   图片   static   invalid   

窗口刷新的时候,会产生Paint事件,那么我们给这个事件添加一个处理函数。然后在这个函数里画图。就能保证所画的图不被刷新掉,

它可以总是显示。Paint事件对应的委托是:public delegate void PaintEventHandler(object sender, PaintEventArgs e);

示例1:在窗口中间画一根线。(创建WindowsForms应用程序)

            Graphics g = this.CreateGraphics();
            Pen p = new Pen(Color.Black);
            //在屏幕中间画一根线
            g.DrawLine(p, 0, this.Height / 2, this.Width, this.Height / 2);
            //画一个矩形
            g.DrawRectangle(p, 50, 50, 200, 100);
            //画一个圆
            g.DrawEllipse(p, 150, 150, 100, 100);
            //手动释放资源
            g.Dispose();
            p.Dispose();        

示例2:一个填充矩形

        private void formPaint(Object sender, PaintEventArgs e)
        {
            Graphics graphics = e.Graphics;
            //蓝色画刷
            SolidBrush brush = new SolidBrush(Color.FromArgb(0, 0, 255));
            //一个矩形
            Rectangle rect = new Rectangle(0, 0, 100, 100);
            //填充一个矩形
            graphics.FillRectangle(brush, rect);
        }

示例3:画一张png图片(用PNG是因为可以显示透明的图片,GIF图片也有这个作用)

        private void formPaint(Object sender, PaintEventArgs e)
        {
            Graphics graphics = e.Graphics;
            //加载图片
            Image img = Image.FromFile(Application.StartupPath+ @"\111.png");
            //图片显示起始位置
            Point strPoint=new Point(50,50);
            //不限制大小绘制
            graphics.DrawImage(img, strPoint);
            //缩小图片绘制,限制在一个矩形内
            Rectangle rect=new Rectangle(50,50,100,100);
            graphics.DrawImage(img, rect);
        }

示例4:用DrawString显示文字

DrawString在Grahpics类里有好几个重载,有的可以让字符串在一个矩形内显示,有的可以使用特定的显示格式。这里就不做详细介绍了。

只讲比较常用的。

看例子吧,处理键盘输入字符事件,在窗口显示输入的字符。如下:

    public partial class Form1 : Form
    {
        public static String strText = "";
        public Form1()
        {
            InitializeComponent();
            this.Paint += formPaint;
            this.KeyPress += formKeyPress;
          
        }
        private void formPaint(Object sender, PaintEventArgs e)
        {
            Graphics graphics = e.Graphics;
            //创建画刷
            SolidBrush brush=new SolidBrush(Color.FromArgb(0,255,0));
            //创建字体
            Font font=new Font("宋体",20f);
            //显示字符串,在一个矩形内
            graphics.DrawString(strText, font, brush, this.ClientRectangle);
         
        }
        private void formKeyPress(object sender, KeyPressEventArgs e)
        {
            strText += e.KeyChar;
            //刷新整个窗口
            this.Invalidate();
        }
    }

 

C# GDI+编程(一)

标签:send   private   bsp   窗口   中间   res   图片   static   invalid   

原文地址:http://www.cnblogs.com/jiangshuai52511/p/7679217.html


评论


亲,登录后才可以留言!