• C# --- WinForm基本知识与绘图(上)


    winform基本知识

    1.WinForm其实就是windows窗体

    2.创建一个windows窗体的第一步是创建一个windows窗体应用项目文件

     3.创建好项目文件后

    这个窗体文件中的resx文件就是资源文件 --- res -- resource --- 我们可以把各种资源导入到这个文件中,把资源导入到这个文件中后,我们就能在实际的可视化窗体中引用这些资源了

    将所有资源放到一个资源文件中方便我们进行统一的资源管理

     4.如何将一个类在两个文件中定义 --- 利用partial(部分)关键字

     被partial关键字修饰的类可以在不同的文件中被定义,到最后每个文件中的定义集合到一起就是这个类的最终定义

    5.在我们创建的winform中我们可以添加各种各样的控件,这些控件在顶端的试图的工具箱中可以查找到

     这些控件的使用方式就是选中后直接拖进我们创建的winform界面就行

    其实这种添加方式是已经被简化封装好的添加方式,实际的底层添加方式依然是通过代码来实现的

    当我们添加一个控件后,这个控件的显示,初始化,设置等等代码都会被自动添加到我们的winform窗体文件中

    这些代码都会被放在带有designer后缀的窗体文件中,这个文件就是专门用来管理窗口的外观和功能设计的

    然后当我们按了按钮之后会发生什么等等的代码都放在另一个文件中,这个文件就是我们的窗口名.cs文件中(用查看代码的方式转到这个文件) --- 这个文件专门放和事件,业务以及逻辑处理相关的代码

     比如我们在窗口中添加了一个按钮控件,然后我们双击这个按钮,这个时候就会自动跳转到窗口名.cs文件中,并在文件中生成一个方法,这个方法会在我们设置的按钮被点击后自动执行 --- 这种方法也被我们称为事件(Event),此处为点击事件

    第一个文件用来放事件处理,业务以及逻辑相关的代码

    第二个文件用来放窗口的外观等设计相关的代码

    第三个文件则是用来放我们导入的资源


    如何设置窗体的生成位置

    1.在最顶端的启动左边我们可以选择我们要启动的项目是那个

     2.设置位置的方法:

    在负责逻辑等代码的.cs文件中我们直接在构造函数中设置窗口生成时的位置(其实就是初始化位置,让其不再生成在默认位置)

    然后在构造函数中写出下面这行代码:

     代码逻辑:调用当前窗体的开始位置属性,然后将屏幕中心的数据赋值给属性

    这个就是在调用屏幕中心的数据 

    (窗体是可以嵌套的,子窗体会镶嵌在父窗体中,而让子窗体生成在父窗体的中心的值则是上面那个图中改为调用,CenterParent)

    除了直接将位置设置到中心,我们还可以自定义位置:

    1.给开始位置属性赋下图这个值

    插入一个知识补充:

    我们如何确定窗口的位置呢?答案是通过屏幕坐标系

    我们规定屏幕的左上角为原点,过原点向右为x轴正方向,过原点向下为y轴正方向

    坐标系的单位长度是像素 --- 比如1920*1080p的屏幕就是横1920个像素点*竖1080个像素点

    如果有副屏的话,副屏依然使用主屏的坐标系

    然后再写这个代码:

     代码逻辑:通过this调用当前winfrom界面的Location位置属性,然后给其赋值

    Point中的参数是我们想让窗口中心点出现在屏幕中的位置的x坐标和y坐标(从左往右)


    如何在窗口中画图?

    我们需要使用系统控件:GDI来画图

    GDI(Graphics Device Interface)--- 图形设备接口

    1.首先我们要创建一块画布

     Graphics是一个画布类,g就是我们实例化的画布对象引用

    我们通过this调用窗口类中的CreateGraphics( )方法(这个方法是属于父类中),创建一个以当前窗口为基础的画布对象,然后将这个画布对象传给我们创建的画布引用来管理这个画布

    如果我们要在画布中画东西的话,就直接通过这个引用调用对应的方法就好了

    创建了好了画布之后我们还要创建一个画笔才能够开始画:

    vs有为我们提供专门的画笔类 --- Pen,通过这个类我们就能够实例化一个画笔出来

    注意创建画笔类的时候我们必须传参来初始化这个画笔

     这个画笔可传的参数有四种(颜色,笔刷,颜色加笔的宽度,笔刷加笔刷的宽度)

     选择画笔类,然后右键点击速览定义我们就可以看到这个画笔类的详细情况

    除了画笔类外我们还可以构造一个颜色类对象 --- 补充知识:在计算机中所有颜色都遵循RGB原则,即所有颜色都可以由红,绿,蓝三种颜色组成

    上面这个就是创建一个颜色的语法,Color哪里调用的方法就是制作颜色的方法,这个方法有很多重载的情况,我们可以通过速览定义的方式去选择我们要用的那一个方法去创建颜色

    除了用构造颜色对象的方法来获取颜色,我们也可以直接通过 Color.颜色类型 来获取c#中提前创建好的颜色 --

    -

     比如要画以一条线,就通过引用调用DrawLine()方法,画其它的命名方式都差不多

    这个方法的三个参数 --- 后两个参数就是我们画的线的起点和起、终点,前面那个pen参数的作用就如提示中所说的那样

    点也有对应的点类 --- Point ,通过点类创建了点在进行点的定义时,我们也需要传两个参数,这个参数是这个点的x,y坐标(相对于屏幕坐标系)

     图中这种方式就相当于 Point pt1 = new Point( 0 , 0 ) 

    !!!上面的所有代码都必须在Paint事件中书写才会起作用,这个Paint事件在哪找又如何创建呢?

    首先我们在这个可视化界面处点击右键选择属性

    选择属性之后就会弹出这个黑框框,这里面有两个是最重要的,一个是属性,一个是事件(闪电和闪电左边那个),属性是上面那个可视化界面的一些类参数,而事件则是在我们创建了可视化界面后的,界面互动功能实现处

     

     双击任意一个事件都会在管理界面逻辑功能的.cs文件中的界面类中生成一段代码,如下:

     这段代码就是事件方法的定义,当界面触发特定事件后就会自动跳转到这里来执行对应的事件方法,比如我们想在界面上画一条线这就触发了Paint事件,触发了事件之后就会自动跳转到事件方法处执行这个方法


    绘制字符串的话就调用drawstring方法

     四个参数 --- string要绘制的字符串,Font(字体),brush(指定我们绘制的字符串的颜色和粗细),point(绘制的字体在界面中的位置)

    创建字体的时候也需要传两个参数 --- 一个是我们选择的字体的名字,一个是字体的大小(大小的单位是像素)

     

     这个SolidBrush指的是粗字体,然后括号中传的参数是红色


  • 相关阅读:
    2022年最新山西建筑施工架子工(建筑特种作业)模拟考试试题及答案
    通过多进程并发方式(fork)实现服务器(注意要回收子进程)
    Transformer的一点理解,附一个简单例子理解attention中的QKV
    小程序基础原理
    【C++】vector的模拟实现
    助力工业物联网,工业大数据之安装事实指标需求分析【二十一】
    跨界电商、游戏技与代理IP的关联
    手机端 Android WebView 获取 blob 链接文件名并下载网页动态生成的 pdf 文件且调用外部程序打开
    Python图形界面框架PyQt5使用详解
    优诺服饰用户服务升级 携手高端百货打造衣物深度护理SPA站
  • 原文地址:https://blog.csdn.net/qq_51947882/article/details/126409962