C# GDI+

一 什么是GDI+

GDI+(Graphics Device Interface)是一种绘图装置接口,可将应用程序和绘图硬件分隔,让我们能够编写与装置无关的应用程序。它可以让我们不需要注意特定显示装置的详细数据,便可在屏幕或打印机显示信息。我们可以呼叫GDI+类被所提供的方法,然后这些方法会适当地呼叫特定的装置驱动程序,而完成绘图。而且与.NET进行了更换的融合。

二 坐标系统

在GDI+中所采用的坐标系统,与平时人们较常用的坐标系统不同,主要差别在于,一般的二维坐标系,X轴与Y轴分别是往右往上递增(左图),而GDI+所采用的坐标系,X轴与Y轴则分别是往右往下递增(右图)。
在这里插入图片描述

1 绘制有一条直线

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 使用GDI绘制简单的图形
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //创建GDI对象
            Graphics g = this.CreateGraphics();
            //创建画笔对象
            Pen pen = new Pen(Brushes.Black);
            //创建两个点
            Point p1 = new Point(30, 50);
            Point p2 = new Point(250, 250);

            g.DrawLine(pen, p1, p2);
        }
        int i = 0;
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            i++;
            label1.Text = i.ToString();
            //创建GDI对象
            Graphics g = this.CreateGraphics();
            //创建画笔对象
            Pen pen = new Pen(Brushes.Black);
            //创建两个点
            Point p1 = new Point(30, 50);
            Point p2 = new Point(250, 250);

            g.DrawLine(pen, p1, p2);
        }
    }
}

二 绘制验证码

利用picturebox进行随机生产数字、线条、颜色、字体等便可实现。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;
using System.IO;

namespace 绘制验证码
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        Random r = new Random();
        /// <summary>
        /// 点击更换验证码
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            string str = null;
            for (int i = 0; i<5;i++)
            {
                int rNumber = r.Next(0, 10);
                str += rNumber;
            }
            //MessageBox.Show(str);
            //创建GDI对象
            Bitmap bmp = new Bitmap(200, 80);
            Graphics g = Graphics.FromImage(bmp);

            for(int i=0;i<5;i++)
            {
                Point p = new Point(i*20,0);
                string[] fonts = { "微软雅黑", "宋体", "黑体", "隶书", "放松" };
                Color[] colors = { Color.Yellow, Color.Black, Color.Blue, Color.Red, Color.AliceBlue };
                g.DrawString(str[i].ToString(), new Font(fonts[r.Next(0, 5)], 15, FontStyle.Bold), new SolidBrush(colors[r.Next(0, 5)]),p);
            }

            for(int i=0;i<20;i++)
            {
                Point p1 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
                Point p2 = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
                g.DrawLine(new Pen(Brushes.Green), p1, p2);
            }

            for(int i=0;i<500;i++)
            {
                Point p = new Point(r.Next(0, bmp.Width), r.Next(0, bmp.Height));
                bmp.SetPixel(p.X, p.Y, Color.Black);
            }

            //将图片镶嵌到pictureb中
            pictureBox1.Image = bmp;
        }
    }
}

06-02
好的,以下是一些关于 C# GDI+ 的面试题: 1. 什么是 GDI+?它有什么作用? GDI+ 是 .NET Framework 中的图形设备界面,它提供了一组开发人员可以用来创建高质量图形和图像的类和方法。通过 GDI+,我们可以创建各种各样的图形和图像,包括线条、矩形、圆形、多边形、文本、图片等,还可以进行图像处理、图形绘制等操作。 2. GDI+GDI 的区别是什么? GDI+GDI 的升级版,在功能上比 GDI 更加强大,它提供了更多的绘图方法和更高级的对象模型,同时还支持 alpha 通道、图像处理等高级功能。此外,GDI+ 还支持更多的图像格式,包括 BMP、JPEG、PNG、GIF、TIFF 等。 3. 如何使用 GDI+ 绘制一条直线? 在 C# 中,我们可以使用 System.Drawing 命名空间中的 Pen 和 Graphics 对象来绘制直线,具体的代码示例如下: ``` // 创建 Pen 对象 Pen pen = new Pen(Color.Black); // 创建 Graphics 对象 Graphics g = this.CreateGraphics(); // 绘制直线 g.DrawLine(pen, 0, 0, 100, 100); ``` 4. 如何使用 GDI+ 绘制一个矩形? 和绘制直线类似,我们可以使用 System.Drawing 命名空间中的 Pen 和 Graphics 对象来绘制矩形,具体的代码示例如下: ``` // 创建 Pen 对象 Pen pen = new Pen(Color.Black); // 创建 Graphics 对象 Graphics g = this.CreateGraphics(); // 创建 Rectangle 对象 Rectangle rect = new Rectangle(0, 0, 100, 100); // 绘制矩形 g.DrawRectangle(pen, rect); ``` 5. 如何使用 GDI+ 绘制一个圆形? 和绘制直线、矩形类似,我们可以使用 System.Drawing 命名空间中的 Pen 和 Graphics 对象来绘制圆形,具体的代码示例如下: ``` // 创建 Pen 对象 Pen pen = new Pen(Color.Black); // 创建 Graphics 对象 Graphics g = this.CreateGraphics(); // 创建 Rectangle 对象 Rectangle rect = new Rectangle(0, 0, 100, 100); // 绘制圆形 g.DrawEllipse(pen, rect); ``` 以上是几个常见的关于 C# GDI+ 的面试题和答案,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值