前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#学习系列文章之Windows窗体应用程序003

C#学习系列文章之Windows窗体应用程序003

原创
作者头像
算法发
修改2020-01-17 22:04:50
1.9K0
修改2020-01-17 22:04:50
举报
文章被收录于专栏:播放刘德华的歌

背景

紧接着上一篇文章,我已经学习了控制台的使用,以及创建不同应用的Helloworld程序,这一篇文章,我介绍Windows窗体应用程序的简单实用,按照调用流程一步一步的操作,希望能帮助初学者也能一步一步的搭建起自己的第一个应用。由于本人水平有限,文章中难免有介绍不足的地方,敬请谅解。

操作步骤

首先,打开vs2017--》新建--》项目--》点击确定:

创建项目
创建项目

然后,项目已经创建成功了,截图如下:

项目创建成功
项目创建成功

其中,白色面板部分就是我们所创建的项目的初始界面,我们可以点击运行项目,红色框柱的部分就是我们运行出来的桌面应用的界面。

初始程序运行
初始程序运行

上面运行成功的是一个空白的界面,在后面,会介绍如何创建我们想要的应用。

主程序的入口
主程序的入口

主程序的代码

代码语言:txt
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp4
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

工具箱熟悉

点击左侧的工具箱,我们可以添加我们想要的控件,可以拖动到面板上,面板上的布局需要自行设计。

工具箱有以下的类型:

  • 公共控件
  • 容器
  • 菜单和工具栏
  • 数据
  • 组件
  • 打印
  • 对话框
  • WPF互操作性
  • 常规
工具箱概览
工具箱概览

每一个工具箱里的控件比较多,可以依次使用每个控件,知道有什么控件可用。

工具箱
工具箱

如何添加控件

有这么多的控件,我们如何添加自己需要的控件呢?就是拖动到面板上就可以了,操作如下图:

添加按钮
添加按钮

添加了两个按钮,双击按钮我们可以进入控件的方法体代码部分,截图如下:

按钮的工程目录
按钮的工程目录

双击工程目录被控住的部分,我们就跳转到描述控件信息的代码:

原始代码详情解读:

代码语言:txt
复制
namespace WindowsFormsApp4
{
    partial class Form1
    {
        /// <summary>
        /// 必需的设计器变量。
        /// </summary>
        private System.ComponentModel.IContainer components = null;

        /// <summary>
        /// 清理所有正在使用的资源。
        /// </summary>
        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #region Windows 窗体设计器生成的代码

        /// <summary>
        /// 设计器支持所需的方法 - 不要修改
        /// 使用代码编辑器修改此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {
            this.button1 = new System.Windows.Forms.Button();
            this.button2 = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // button1
            // 
            this.button1.Location = new System.Drawing.Point(311, 55);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(109, 45);
            this.button1.TabIndex = 0;
            this.button1.Text = "button1";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            // 
            // button2
            // 
            this.button2.Location = new System.Drawing.Point(311, 171);
            this.button2.Name = "button2";
            this.button2.Size = new System.Drawing.Size(109, 41);
            this.button2.TabIndex = 1;
            this.button2.Text = "button2";
            this.button2.UseVisualStyleBackColor = true;
            this.button2.Click += new System.EventHandler(this.button2_Click);
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(800, 450);
            this.Controls.Add(this.button2);
            this.Controls.Add(this.button1);
            this.Name = "Form1";
            this.Text = "Form1";
            this.ResumeLayout(false);

        }

        #endregion

        private System.Windows.Forms.Button button1;
        private System.Windows.Forms.Button button2;
    }
}

其中,我们来看一下button1的信息设置,我们可以通过设置部分的代码设置按钮的基本属性。

代码语言:javascript
复制
// button1
            // 
            this.button1.Location = new System.Drawing.Point(311, 55);//按钮位置信息
            this.button1.Name = "button1";//按钮名称
            this.button1.Size = new System.Drawing.Size(109, 45);//按钮的大小
            this.button1.TabIndex = 0;//按钮的索引
            this.button1.Text = "button1";//按钮上显示的名称
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);
            

以下是我从本地导入图片到PictureBox的截图,操作是右键单击PictureBox,然后点击选择图像,然后选择本地资源,点击确定,选择相应的图片就可以了。

添加图片
添加图片

我们可以拖动窗口调整大小使得适应图片,也可以在属性里设置自动适应图片大小,截图如下。

添加图片
添加图片

小结

在前面部分,我们分别介绍了如何创建项目,如何使用控件,以及源代码的简单剖析,在后面,我们将介绍一个打开和保存图片的实例,这样可以更深入的理解WindowsForm程序的工作原理。

完整的Windows 窗体应用程序打开和保存图片

具体的操作步骤如下:

1. 选择新建项目,选择Windows 窗体应用,并命名为showPicture。

创建showPicture的项目
创建showPicture的项目

2.从工具箱中拖动两个Button和一个PictureBox到面板上,并调整位置对齐为如下的设计:

3.拖动调整大小

4. 设计按钮

首先,右键单击按钮,然后选择属性,然后在右下角属性框设置名称为打开图片;同理,button2设置名称为保存图片。

修改按钮名字
修改按钮名字

然后,修改PictureBox的背景色

最后,修改结果如下

设计的结果
设计的结果

1、Picturebox控件SizeMode属性

(1)Normal模式:如果图片大于Picturebox控件大小,图片不能完全显示。

(2)AutoSize:自动调整Picturebox控件大小去适应图片的大小,图片可以完全显示。

(3)StretchImage:Picturebox控件大小不变,自动调整图像适应控件。

5. 添加代码

双击打开图片按钮,添加如下代码:

添加代码
添加代码
代码语言:txt
复制
    OpenFileDialog file = new OpenFileDialog();
            file.InitialDirectory = ".";
            file.Filter = "所有文件(*.*)|*.*";
            file.ShowDialog();
            if (file.FileName != string.Empty)
            {
                try
                {
                    pathname = file.FileName;   //获得文件的绝对路径
                    this.pictureBox1.Load(pathname);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

            }

双击保存图片按钮,跳转到按钮调用的代码,添加红框部分的代码:

保存图片的代码
保存图片的代码
代码语言:txt
复制
SaveFileDialog save = new SaveFileDialog();
            save.ShowDialog();
            if(save.FileName!=string.Empty)
            {
                pictureBox1.Image.Save(save.FileName);
            }

完整的Form1的代码如下:

代码语言:txt
复制
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 showPicture
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private string pathname = string.Empty;     		//定义路径名变量
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog file = new OpenFileDialog();
            file.InitialDirectory = ".";
            file.Filter = "所有文件(*.*)|*.*";
            file.ShowDialog();
            if (file.FileName != string.Empty)
            {
                try
                {
                    pathname = file.FileName;   //获得文件的绝对路径
                    this.pictureBox1.Load(pathname);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            SaveFileDialog save = new SaveFileDialog();
            save.ShowDialog();
            if(save.FileName!=string.Empty)
            {
                pictureBox1.Image.Save(save.FileName);
            }
        }
    }
}

然后,点击启动

弹出如下对话框之后,单击打开图片

选择图片结果如下图,PictureBox已经自适应图片的大小。

然后选择保存图片,设置名称

保存图片
保存图片

然后就有了两张图片在文件夹中

总结

这就是一个简单的Windows窗体应用程序的使用介绍。有了这个基础之后,以后有可能可以通过这个应用,传入图片,调用我们的人脸识别产品的接口,去实现不同应用场景的需求。

完整应用
完整应用

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 操作步骤
    • 主程序的代码
      • 工具箱熟悉
        • 如何添加控件
          • 小结
          • 完整的Windows 窗体应用程序打开和保存图片
          • 总结
          相关产品与服务
          人脸识别
          腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档