C#带背景绘图拖鼠标画矩形和直线
C#的pictureBox上绘图,带背景,有橡皮筋效果,实现画矩形和直线,图片可保存。
开发环境:Visual Studio 2012(.net framework 4.5)
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 917 2018-06-16 20:01 WFA画图.sln
..A..H. 26112 2018-06-16 23:32 WFA画图.v11.suo
文件 187 2018-06-16 20:01 WFA画图App.config
文件 297984 2018-06-17 00:03 WFA画图inDebugWFA画图.exe
文件 187 2018-06-16 20:01 WFA画图inDebugWFA画图.exe.config
文件 30208 2018-06-17 00:03 WFA画图inDebugWFA画图.pdb
文件 22984 2018-06-17 00:04 WFA画图inDebugWFA画图.vshost.exe
文件 187 2018-06-16 20:01 WFA画图inDebugWFA画图.vshost.exe.config
文件 490 2016-07-16 19:44 WFA画图inDebugWFA画图.vshost.exe.manifest
文件 4491 2018-06-17 00:03 WFA画图Form1.cs
文件 5352 2018-06-17 00:03 WFA画图Form1.Designer.cs
文件 5817 2018-06-17 00:03 WFA画图Form1.resx
文件 7348 2018-06-16 23:07 WFA画图objDebugDesignTimeResolveAssemblyReferencesInput.cache
文件 0 2018-06-16 20:01 WFA画图objDebugTemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
文件 0 2018-06-16 20:01 WFA画图objDebugTemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
文件 0 2018-06-16 20:01 WFA画图objDebugTemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
文件 5120 2018-06-16 23:07 WFA画图objDebugTempPEProperties.Resources.Designer.cs.dll
文件 1059 2018-06-17 00:04 WFA画图objDebugWFA画图.csproj.FileListAbsolute.txt
文件 1061 2018-06-17 00:03 WFA画图objDebugWFA画图.csproj.GenerateResource.Cache
文件 2209 2018-06-16 22:56 WFA画图objDebugWFA画图.csprojResolveAssemblyReference.cache
文件 297984 2018-06-17 00:03 WFA画图objDebugWFA画图.exe
文件 180 2018-06-17 00:03 WFA画图objDebugWFA画图.Form1.resources
文件 30208 2018-06-17 00:03 WFA画图objDebugWFA画图.pdb
文件 286159 2018-06-16 23:08 WFA画图objDebugWFA画图.Properties.Resources.resources
文件 521 2018-06-16 20:01 WFA画图Program.cs
文件 1338 2018-06-16 20:01 WFA画图PropertiesAssemblyInfo.cs
文件 3610 2018-06-16 23:07 WFA画图PropertiesResources.Designer.cs
文件 6453 2018-06-16 23:07 WFA画图PropertiesResources.resx
文件 1096 2018-06-16 20:01 WFA画图PropertiesSettings.Designer.cs
文件 249 2018-06-16 20:01 WFA画图PropertiesSettings.settings
............此处省略14个文件信息
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WFA画图
{
public partial class Form1 : Form
{
#region 成员变量
Point m_p1 m_p2;
bool m_flgKeuDowm = false;
Bitmap m_mapStart;
Bitmap m_mapEnd;
Bitmap m_mapInit;
Graphics m_graphics;
#endregion
public Form1()
{
InitializeComponent();
m_graphics = pictureBox1.CreateGraphics();
// 最初的背景图存起来,清除绘制图形时用
m_mapInit = (Bitmap)pictureBox1.BackgroundImage;
}
#region 鼠标事件
///
/// 鼠标按下
///
///
///
private void pictureBox1_MouseDown(object sender MouseEventArgs e)
{
m_flgKeuDowm = true;
_initPoint(e);
}
///
/// 鼠标移动
///
///
///
private void pictureBox1_MouseMove(object sender MouseEventArgs e)
{
if (!m_flgKeuDowm)
{
return;
}
else
{
m_p2 = new Point(e.X e.Y);
}
int width = Math.Abs(e.X - m_p1.X);
int height = Math.Abs(e.Y - m_p1.Y);
_draw();
}
///
/// 鼠标抬起
///
///
///
private void pictureBox1_MouseUp(object sender MouseEventArgs e)
{
m_flgKeuDowm = false;
// 最终的图片设为背景图
pictureBox1.BackgroundImage = m_mapEnd;
// 起止点初始化
_initPoint(e);
}
#endregion
private void _draw(){
// 每次的【终止图】都是取自【起始图】
m_mapEnd = (Bitmap)m_mapStart.Clone();
Graphics g = Graphics.FromImage(m_mapEnd);
Pen pen = new Pen(Color.Red3);
if (rdoRect.Checked)
{
Point p1p2;
_swapPoint(out p1out p2 );
int width = Math.Abs(p2.X - p1.X);
int height = Math.Abs(p2.Y - p1.Y);
g.DrawRectangle(pen p1.X p1.Y width height);
}else if(rdoLine.Checked){
// 画直线不用转换点坐标,直接用成员变量的Point
g.DrawLine(pen m_p1 m_p2);
}
m_graphics.DrawImage(m_mapEnd new Point(0 0));
}
private void _initPoint(MouseEventArgs e)
{
m_p1 = new Point(e.X e.Y);
m_p2 = m_p1;
if (pictureBox1.BackgroundImage != null)
{
m_mapStart = (Bitmap)pictureBox1.BackgroundImage;
}
}
private void
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 917 2018-06-16 20:01 WFA画图.sln
..A..H. 26112 2018-06-16 23:32 WFA画图.v11.suo
文件 187 2018-06-16 20:01 WFA画图App.config
文件 297984 2018-06-17 00:03 WFA画图inDebugWFA画图.exe
文件 187 2018-06-16 20:01 WFA画图inDebugWFA画图.exe.config
文件 30208 2018-06-17 00:03 WFA画图inDebugWFA画图.pdb
文件 22984 2018-06-17 00:04 WFA画图inDebugWFA画图.vshost.exe
文件 187 2018-06-16 20:01 WFA画图inDebugWFA画图.vshost.exe.config
文件 490 2016-07-16 19:44 WFA画图inDebugWFA画图.vshost.exe.manifest
文件 4491 2018-06-17 00:03 WFA画图Form1.cs
文件 5352 2018-06-17 00:03 WFA画图Form1.Designer.cs
文件 5817 2018-06-17 00:03 WFA画图Form1.resx
文件 7348 2018-06-16 23:07 WFA画图objDebugDesignTimeResolveAssemblyReferencesInput.cache
文件 0 2018-06-16 20:01 WFA画图objDebugTemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs
文件 0 2018-06-16 20:01 WFA画图objDebugTemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs
文件 0 2018-06-16 20:01 WFA画图objDebugTemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs
文件 5120 2018-06-16 23:07 WFA画图objDebugTempPEProperties.Resources.Designer.cs.dll
文件 1059 2018-06-17 00:04 WFA画图objDebugWFA画图.csproj.FileListAbsolute.txt
文件 1061 2018-06-17 00:03 WFA画图objDebugWFA画图.csproj.GenerateResource.Cache
文件 2209 2018-06-16 22:56 WFA画图objDebugWFA画图.csprojResolveAssemblyReference.cache
文件 297984 2018-06-17 00:03 WFA画图objDebugWFA画图.exe
文件 180 2018-06-17 00:03 WFA画图objDebugWFA画图.Form1.resources
文件 30208 2018-06-17 00:03 WFA画图objDebugWFA画图.pdb
文件 286159 2018-06-16 23:08 WFA画图objDebugWFA画图.Properties.Resources.resources
文件 521 2018-06-16 20:01 WFA画图Program.cs
文件 1338 2018-06-16 20:01 WFA画图PropertiesAssemblyInfo.cs
文件 3610 2018-06-16 23:07 WFA画图PropertiesResources.Designer.cs
文件 6453 2018-06-16 23:07 WFA画图PropertiesResources.resx
文件 1096 2018-06-16 20:01 WFA画图PropertiesSettings.Designer.cs
文件 249 2018-06-16 20:01 WFA画图PropertiesSettings.settings
............此处省略14个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)