• 大小: 1.17MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-27
  • 语言: C#
  • 标签:

资源简介

基于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_交互式绘图[矢量]\meta.cs
     文件        1546  2011-04-24 21:28  ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\metaLine.cs
     文件        1959  2011-04-24 21:28  ChA3_交互式绘图\Backup\ChA302_交互式绘图[矢量]\metaRect.cs
     文件         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个文件信息

评论

共有 条评论

相关资源