资源简介
基于C#的交互式绘图源代码,希望对学习C#的同学能够有所帮助!

代码片段和文件信息
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace ChA301_交互式绘图_位图_
{
public enum ObjType {
Pointer
Earse
Pencil
Line
Rect
Circle
FillRect
FilleCircle
}
public partial class FrmInteractDraw1 : Form
{
private Bitmap _bitmap; // 目标图形
private Point _ptStart; // 鼠标按下的位置
private bool _isMoving; // 鼠标是否按下
private Pen _pen; // 画笔
private Brush _brush; // 画刷
private ObjType _objType; // 绘图对象类型
public FrmInteractDraw1()
{
InitializeComponent();
cboPenstyle.SelectedIndex = 0;
cboBrushType.SelectedIndex = 0;
_bitmap = new Bitmap(pbFill.Width pbFill.Height);
_ptStart = new Point(0 0);
_isMoving = false;
PenChanged(this null);
BrushChanged(this null);
_objType = ObjType.Pointer;
}
// 响应鼠标按下的消息
private void pbFill_MouseDown(object sender MouseEventArgs e)
{
_ptStart = new Point(e.X e.Y);
_isMoving = true;
}
// 响应鼠标移动的消息
private void pbFill_MouseMove(object sender MouseEventArgs e)
{
if (_isMoving)
{
if (_objType == ObjType.Earse || _objType == ObjType.Pencil)
{
// 得到目标图形,以此实现改变目标图形
pbFill.Image = _bitmap;
// 基于pbFill.Image建立图形对象
using (Graphics g = Graphics.FromImage(pbFill.Image))
{
if (_objType == ObjType.Earse)
{
g.FillEllipse(new SolidBrush(Color.White) e.X - 8 e.Y - 8 16 16);
}
else if (_objType == ObjType.Pencil)
{
Point ptEnd = new Point(e.X e.Y);
g.DrawLine(_pen _ptStart ptEnd);
_ptStart = ptEnd;
}
}
}
else
{
// 得到目标图形的副本,以此实现不动态改变_bitmap图形
pbFill.Image = (Bitmap)_bitmap.Clone();
// 基于pbFill.Image建立图形对象
using (Graphics g = Graphics.FromImage(pbFill.Image))
{
// 在图形对象上绘鼠标移动时的轨迹点线
Pen pen = new Pen(Color.Red);
pen.Dashstyle = Dashstyle.Dot;
switch (_objType)
{
case ObjType.Line:
g.DrawLine(pen _ptStart new Point(e.X e.Y));
break;
case ObjType.Rect:
case ObjType.FillRect:
g.DrawRectangle(pen new Rectangle(_ptStart.X _ptStart.Y e.X - _ptStart.X e.Y - _ptStart.Y));
break;
case ObjType.Circle:
case ObjType.FilleCircle:
g.DrawEllipse(pen new Rectangle(_ptStart.X _ptStart.Y e.X - _ptStart.X e.Y - _ptStart.Y));
break;
}
}
}
}
}
// 响应鼠标抬起的消息
private void pbFill_MouseUp(object sender MouseEventArgs e)
{
// 设置鼠标按下为false
_isMoving = false;
// 得到目标图形,以此实现改变目标图形
pbFill.Image = _bitmap;
// 基于pbFill.Image建立图形对象
Rectangle rect;
using (Graphics g = Graphics.FromImage(pbFill.Image))
{
// 使用用户定义的笔和刷子,在图形对象上绘目标图形
switch (_objType)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-11-30 12:16 ChA3_交互式绘图\
目录 0 2012-11-30 12:16 ChA3_交互式绘图\Backup\
目录 0 2012-11-30 12:16 ChA3_交互式绘图\Backup\ChA301_交互式绘图[位图]\
文件 3863 2011-04-24 21:29 ChA3_交互式绘图\Backup\ChA301_交互式绘图[位图]\ChA301_交互式绘图[位图].csproj
文件 6567 2011-04-25 08:07 ChA3_交互式绘图\Backup\ChA301_交互式绘图[位图]\FrmInteractDraw1.cs
文件 17781 2011-04-24 21:27 ChA3_交互式绘图\Backup\ChA301_交互式绘图[位图]\FrmInteractDraw1.designer.cs
文件 11066 2011-04-24 21:23 ChA3_交互式绘图\Backup\ChA301_交互式绘图[位图]\FrmInteractDraw1.resx
文件 444 2011-04-24 21:27 ChA3_交互式绘图\Backup\ChA301_交互式绘图[位图]\Program.cs
目录 0 2012-11-30 12:16 ChA3_交互式绘图\Backup\ChA301_交互式绘图[位图]\Properties\
文件 1416 2011-04-24 11:06 ChA3_交互式绘图\Backup\ChA301_交互式绘图[位图]\Properties\AssemblyInfo.cs
文件 2884 2011-04-24 21:23 ChA3_交互式绘图\Backup\ChA301_交互式绘图[位图]\Properties\Resources.Designer.cs
文件 5612 2011-04-24 11:06 ChA3_交互式绘图\Backup\ChA301_交互式绘图[位图]\Properties\Resources.resx
文件 1128 2011-04-24 21:23 ChA3_交互式绘图\Backup\ChA301_交互式绘图[位图]\Properties\Settings.Designer.cs
文件 249 2011-04-24 11:06 ChA3_交互式绘图\Backup\ChA301_交互式绘图[位图]\Properties\Settings.settings
目录 0 2012-11-30 12:16 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\
文件 1818 2011-04-24 21:28 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\BrushProp.cs
文件 4092 2011-04-24 21:30 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\ChA302_交互式绘图[矢量].csproj
文件 10013 2011-04-25 17:08 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\FrmInteractDraw2.cs
文件 19605 2011-04-25 17:03 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\FrmInteractDraw2.designer.cs
文件 11066 2011-04-25 17:03 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\FrmInteractDraw2.resx
文件 1250 2011-04-25 14:41 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\me
文件 1546 2011-04-24 21:28 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\me
文件 1959 2011-04-24 21:28 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\me
文件 224 2011-04-24 21:28 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\MyGraph.cs
文件 1501 2011-04-24 21:28 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\PenProp.cs
文件 444 2011-04-24 21:30 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\Program.cs
目录 0 2012-11-30 12:16 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\Properties\
文件 1416 2011-04-24 11:07 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\Properties\AssemblyInfo.cs
文件 2884 2011-04-24 21:28 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\Properties\Resources.Designer.cs
文件 5612 2011-04-24 11:07 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\Properties\Resources.resx
文件 1128 2011-04-24 21:28 ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\Properties\Settings.Designer.cs
............此处省略450个文件信息
- 上一篇:c#编写的设备管理系统
- 下一篇:WPF 文件管理系统
评论
共有 条评论