手把手教你用WinForm制作地图编辑工具(二)

从今天开始,进入正题

一、创建项目

  1.1 创建一个WinForm项目,我这儿用的是.NET Framework4.6.2

 

二、导入图片资源

  2.1 准备好菜单的图片

    

  2.2 导入资源文件

  

  2.3 设计界面

    2.3.1 把主窗体设置为无边框模式,并且全屏显示

     

  2.3.2 在窗体最上方新增一个Panel自定义窗体标题以及删除按钮等

    

 

 2.3.3 关闭按钮事件

/// <summary>
/// 系统退出
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnExit_Click(object sender, EventArgs e)
{
    Environment.Exit(0);
}    

2.3.4 设置布局 怎么设置的我就不讲解了,这个比较简单,设置Dock就行了,右边用个TableLayout,平均上下两部分就行

 

2.3.5 新增菜单 新增个ToolStrip

 2.3.6 组件那边放置个TreeView  属性那边放置个PropertyGrid

 

2.3.7 编写自定义地图Panel

  新建一个MapPanel类继承Panel,设置双缓冲

    public class MapPanel : Panel
    {
        /// <summary>
        /// 构造方法,初始化数据
        /// </summary>
        public MapPanel()
        {
            //开启双缓冲,不开启双缓冲,画面重绘的时候会闪烁
            SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.SupportsTransparentBackColor, true);
            this.BackColor = Color.Transparent;
        }

        protected override void OnPaintBackground(PaintEventArgs e)
        {
            // 重载基类的背景擦除函数,
            // 解决窗口刷新,放大,图像闪烁
            return;
        }

        /// <summary>
        /// 绘制 重绘
        /// </summary>
        /// <param name="e"></param>
        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);
        }
    }

2.3.8 编译后,将MapPanel放置到中间GroupBox中

界面设计的差不多了,预知后事如何,请听下回分解

原文地址:https://www.cnblogs.com/zjwno1/p/14984930.html