C#之基于winform窗体绘制简单图形

什么是窗体?

可以理解为是一个自定义的控制台应用程序。

假如需要仅仅是用vs制作游戏的话,那么vs中,我们平时所用到的控制台应用程序所呈现的窗口时远远不够用的。因此需要自定义窗体。

因此在新建项目时,我们不能再使用控制台应用程序,而是应该选择窗体:

之后就完成了窗体的新建。

这里可以给大家直接运行我们新建好地窗体:

如下弹出地窗口就是我们新建好的窗体。由于我们没有对窗体进行任何操作,所以当前窗体是一片空白的。 

其次,完成之后会在工程目录下发现如下几个文件:

Form1.cs中专门放置一些和交互响应时间、逻辑处理、业务相关的代码;

Designer里面就是管理窗体的外观

拓展1——设置窗体的生成位置:

如果需要自定义生成位置,可以使用manual方法,后面接窗体的生成坐标位置。

拓展2——窗体之中的控件

什么是控件?

对有Android studio开发经验的人来说控件并不陌生。所谓控件,就是类似于按钮这种可以响应事件并且能够进行相应处理的图形交互组件。

vs窗体中控件的位置:

打开视图里面的工具栏:

右侧就会展开一个控件的列表,里面有各种各样的控件:

我们开发游戏不会用到哪些控件,但是我们会用到一个图形设备接口GDI。简单来说,就是一个画图的技术,可以把图片画在winform上面。

  接下来介绍大家简易地用GDI画图。

在绘制图形前,需要我们注意的时,这个窗体的坐标轴是以屏幕左上角为坐标原点的,这对于我们绘制图形,设置坐标点,十分重要,具体如下图所示:

简单直线的绘制

打开form1.cs文件,会有如下代码:

 但是如果直接在form1的构造函数中绘制图形,窗口并不会进行相关绘制,这是因为在构造函数中绘制图形,此时窗体都并没有创建完成,因此也不会有图形的绘制。

因此,我们需要在窗体创建好之后再绘制图形,操作步骤如下:

再设计窗口中,右击——属性:

找到paint,空白处点击,新建paint方法:

 可以发现,再form1代码文件中会自动帮我们新建一个paint方法,我们直接在这个方法中绘制图形即可:

这一步可以理解为新建了一个绘图的画布:

 绘制图形使用的是draw的一些方法,画直线则是用的drawLine:

 使用draw的方法需要传递关于画笔、起点以及原点相关信息,因此在此之前我们定义了一个画笔。

最终编写代码、运行结果如下:

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 ct1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            Pen p = new Pen(Color .Blue);
            g.DrawLine(p,new Point (1,1),new Point (100,100));
        }
    }
}

为了验证之前的坐标,我设置的直线的起点坐标为(1,1)。可以看见,直线的(1,1)的位置是很接近屏幕左上角的。

大家也可以进一步测试(0.00001,0.0000001 )的坐标,结果应该是无限趋近窗体屏幕左上角的。

但是值得注意的是,new的point类名的参数值类型为int型,但是大家可以使用强制转换类型来完成测试。

绘制简单字符串

其实绘制方法同上,只是由原本的drawline变成了drawstring:

 传递的参数分别为要绘制的字符串、字体(字体形式,大小)、刷子(刷子颜色)、绘制坐标。

完成效果如下:

猜你喜欢

转载自blog.csdn.net/qq_51196701/article/details/123086884