简单的c#winform画图工具

简介: 1首先创建一个form窗体 然后拖入pictureBox作为画板 2创建两个button按钮 一个为“开始画画 ” 一个“保存”对于画板的创建 首先 我们得声明一些有关变量Bitmap myImage; /...

1首先创建一个form窗体 然后拖入pictureBox作为画板
2创建两个button按钮 一个为“开始画画 ” 一个“保存”

对于画板的创建 首先 我们得声明一些有关变量

Bitmap myImage;    //位图 用来存储画板的基础
        int PBwidth; //这个是  画板的宽度
        int PBheight;//这个是  画板的高度
        bool beginPain = false;//定义是否画板开启 初始化否
        bool beginMove = false;//定义是否开始移动画画 初始化否
        int currentXpos;//定义的一个变量 用来存储 移动中坐标的x值
        int currentYpos;//定义的一个变量 用来存储 移动中坐标的y值

然后 我们要初始化beginPain和BeginMove在窗体初始化的时候

PBheight = pictureBox1.Height;
PBwidth = pictureBox1.Width;

然后单击按钮button1的效果

 if (button1.Text == "开始画画")
            {
                beginPain = true;
                button1.Text = "结束画画";
                myImage = new Bitmap(PBwidth, PBheight);//创建并初始化位图大小
                Graphics g = Graphics.FromImage(myImage);//将位图作为画板
                g.Clear(Color.White);// 初始化画板为白色
                pictureBox1.Image = myImage;//将初始化的图片赋值给pictureBox
            }
            else
            {
                beginPain = false;
                button1.Text = "开始画画";

            }

这是左键单击pictureBox的效果

  if (beginPain == true)
            {
                if (e.Button == MouseButtons.Left)//获取单击是否为鼠标左键
                {
                    beginMove = true;  
                    currentXpos = e.X; //获取单击的位置
                    currentYpos = e.Y;
                }
            }

这是移动鼠标在pictureBox的效果

 if (beginMove)  //判断是否移动
            {
                Graphics g = Graphics.FromImage(myImage); 
                Pen myPen = new Pen(Color.Red, 2);//画笔的初始
                g.DrawLine(myPen, currentXpos, currentYpos, e.X, e.Y);//画笔在画板上的操作
                pictureBox1.Image = myImage;//跟新图像
                g.Dispose();//释放画板资源
                currentYpos = e.Y;//跟新坐标
                currentXpos = e.X;
            }

这是松开鼠标左键的效果

if (e.Button == MouseButtons.Left)  //这样 画画结束
            {
                beginMove = false;
                //currentXpos = 0;
                //currentYpos = 0;
            }

这是保存按钮的操作

if (beginPain == true)   //判断是否在画画
            {
                SaveFileDialog sfd = new SaveFileDialog();  
                //sfd.InitialDirectory  这个属性可以初始化保存路径 但是没用这里
                if (sfd.ShowDialog() == DialogResult.OK)//ShowDialog()的话  如果结束掉该窗口  其他窗口无法操作
                {
                    myImage.Save(sfd.FileName + ".Jpeg", ImageFormat.Jpeg);//图像保存 格式是Jpeg   
                }
            }
            else
            {
                MessageBox.Show("请重新绘制图片");
                return;
            }
目录
相关文章
|
自然语言处理 C# Windows
C#开源免费的Windows右键菜单管理工具
C#开源免费的Windows右键菜单管理工具
211 5
|
SQL 数据库连接 应用服务中间件
C#WinForm基础编程(三)
C#WinForm基础编程
231 0
C#WinForm基础编程(二)
C#WinForm基础编程
231 0
|
IDE C# 开发工具
一个开源轻量级的C#代码格式化工具(支持VS和VS Code)
一个开源轻量级的C#代码格式化工具(支持VS和VS Code)
376 6
|
10月前
|
Linux C# iOS开发
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
240 12
|
10月前
|
程序员 C# 数据库
C# 比较对象新思路,利用反射技术打造更灵活的比较工具
中途接手的项目,碰到需要在更新对象信息时比较并记录差异的需求,最变态的还有附加要求,怎么办?有没有既能满足需求又能对项目影响最小的方法呢?分享这个我封装的方法,一个利用反射技术打造的更灵活的比较工具
148 5
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
API C#
C#实现Winform程序右下角弹窗消息提示
C#实现Winform程序右下角弹窗消息提示
646 1