- 浏览: 189180 次
- 性别:
- 来自: 湖南
文章分类
- 全部博客 (52)
- 一般 (2)
- java (2)
- 硬件的学习,软件的呼应 (1)
- 硬件知识 (2)
- 数组和队列基础的研究 (1)
- 初步了解文件保存与对io刘深刻的理解 (1)
- io与文件 (1)
- android五大布局 (1)
- Java与mySQL之间的概述 (0)
- mySQL命令口的概述 (1)
- android.多线程.生命周期 (1)
- java.android.the development of voice (1)
- android ConcurrentModificationException 异常 (1)
- linux (1)
- linux shell (1)
- linux 操作系统 进程 c++ 解析 (1)
- C# 画板 实现和通信解析 (0)
- java Mina TCP/IP UDP/IP (1)
- java Mina 通信源码的解析 (1)
- java中数据结构二分查法 (1)
- java中数据结构Bitmap查找相等元素 (1)
- java Bitmap 数据结构 (1)
- 二进制 低级语言 高级语言 (1)
- C# 画板 问题解析 (1)
- C# UDP TCP (1)
- C# 聊天室 过程 (1)
- java Mina 解析 (1)
- web html 语言的标示解析 (1)
- html jsp 乱码解决 (1)
- web java lib jsp的javamail (1)
- JAVA Spring STRUCTS Hibernate (0)
- Java Spring Struts Hibernate (0)
- TCP UDP (1)
- Java Web Spring Struts Hibernate (1)
- LabSQL (1)
- labview labSQL mySQL (1)
- Windows DLL 操作系统 (1)
- R语言 学习包 (1)
- B树 算法 数据结构 (1)
- labview TCP/IP 波形图 (1)
- C++ KMP 数据结构 算法 (1)
- C++ KMP 数据结构 算法 理论 (1)
- 数据结构 B+ B* (1)
- B树 数据结构 结构体 思路 (1)
- B树 高度 性能 思路 (1)
- 顺序Gauss消除法 矩阵 数值分析 C++ (1)
- C++ 排序 数据结构 算法 理论 (1)
- Java 重绘 继承 对象 Wallpaper (0)
- Java 对象 继承 重绘 多态 Wallpaper (1)
- Java Tomcat web 错误解析 (1)
- Java 队列 堆解析 (1)
- Java JDK 优先队列 PriorityQueue (0)
- Java JDK 优先队列 PriorityQueue (1)
- Android JNI C语言 Ubuntu Linux ADB工具 动态链接库so (0)
- Android JNI C语言 Ubuntu Linux ADB工具 动态链接库so (1)
- 研发 核心技术 产品 技术 市场 (0)
最新评论
-
q114687576:
http://www.blue-zero.com/Chat/ ...
C# 聊天室的框架设计实现源码 -
chinesejie:
你用了byte 数组, 其实 空间最多节省 4倍
Bitmap算法查找相等元素源码 -
luozhong915127:
JuliaAilse 写道那个桢布局的。覆盖后可以在需要时再显 ...
android 界面布局 -
这不是我:
很好,很有帮助
R语言中的机器学习包 -
luozhong915127:
什么意思,踩别人连个意见都不给。
优先队列与堆的解析
C#项目的解析
C#语言继承了C和C++语言的特性,并且与java有紧密的联系。C#语言和.NET框架协调工作,一起构建了一个高度优雅的编程环境。可以说C#的核心是面向对象程序设计(opp); 好吧,我说这么多,就进入软件的操作,呵呵。首先要注意的问题是,Main的m要大些,代码如下:static void Main()。在命令口编写,应该start/Visual Studio 2005/Visual Studio Tools/Visual Stdio 2005 Command Prompt, 你就可以在命令口操作了,呵呵,这是高手来的地方哟!嗯,我能发现这个地方我也是高手的高手哟!代码如下:\>csc Example.cs. 现在我讲一下我的画板的重绘是怎样实现的,首先,你要清楚重绘在C#的方法是什么,则是onPaint(object sender,PaintEventArgs e),这个方法是重写Froms的方法,而这个界面类继承了它,格式这样的From1:Froms,在这里我讲一下抽象类的用方法,因为下面我要用直线类去实现抽象类,我遇到一个问题,嗯,就是我去是实现这个抽象类时,就是要重写抽象类的方法,在void加override,可是提示如不加override,否则加new,但是运行报错说“你级别不高”经过一番的查找,终于找到了问题,那就是你的抽象类的方法中的abstract改为Virtual方法。即可。 如果是抽象类的方法时候
public override void draw();
如果是虚拟类的方法时候
public new void draw();
每一次画的你要你要保存下来,在这里我使用的是List,没有使用ArrayList,List是一个接口,是Collection接口的一个子接口。是一个有序的集合。而ArrayList是List的一个实现类,可以实现数组大小的可变,可以很方便的进行增加和删减数组内元素的操作。 List list=new ArrayList();这种形式成为向上转型,ArrayList实现了List接口,可以看成是从List继承而来,一个子类的对象可以指向它父类。比如,狗从动物继承而来,狗是一只动物,所以狗的对象可以当作一只普通的动物来看待。肯定你要使用泛类才能保存。把你要的颜色和点和paint等等一些属性封装起来。 在C#画曲线,没有想java里有MoseDrag方法,可是有一个MouseMove这个方法。代码如下:
From1.cs类 C#代码 <P><SPAN style="FONT-SIZE: 14pt"><DIV class=Section0> <PRE class=c# name="code">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; namespace WindowsFormsApplication1 { public partial class Form1 : Form { //定义坐标 int x1, y1, x2, y2,x3,y3; //定义画布 Graphics g; // 创建画笔 Pen paint = new Pen(Color.Red, 3); // 定义按钮名字 String name; // 创建保存形状集合 List<NetShape> shapes = new List<NetShape>(); //新建形状对象 NetShape shape; public Form1() { InitializeComponent(); //获得画布 g = this.panel1.CreateGraphics(); // 给panel加画笔监听 this.panel1.Paint += new PaintEventHandle(this.OnPaint); // // 给panel加鼠标监听 this.panel1.MouseMove += new MouseEventHandler (this.F_MouseMove); } private void Form1_Load(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { //获得按钮的字符串 name = ((Button)sender).Name; } public void Form1_MouseDown(object sender, MouseEventArgs e) { //得到坐标 x1 = e.X; y1 = e.Y; } public void F_MouseMove(object sender, MouseEventArgs e) { //判断是否按钮符合 if (name.Equals("button1")) { x3 = e.X; y3 = e.Y; // 用包装好的类画直线 shape = new ImpLine(paint, x1, y1, x3, y3); shape.draw(g); // 添加到集合 shapes.Add(shape); x1 = x3; y1 = y3; } } public void Form1_MouseUp(object sender, MouseEventArgs e) { x2 = e.X; y2 = e.Y; if (name.Equals("button2")) { shape = new ImpLine(paint, x1, y1, x2, y2); } shape.draw(g); shapes.Add(shape); } /* *重绘 * */ public void OnPaint(object sender, PaintEventArgs e) { //遍历集合的形状 for(int i=0;i < shapes.Count;i++) { NetShape shape = shapes.ElementAt<NetShape>(i); shape.draw(g); } } } } </PRE> </DIV> <P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"> 直线 类</P> <DIV class=Section0> <PRE class=c# name="code">using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace WindowsFormsApplication1 { public class ImpLine:NetShape { int x1, y1, x2, y2; Pen paint; public ImpLine(Pen paint,int x1, int y1, int x2, int y2) { this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; this.paint = paint; } public override void draw(Graphics g) { g.DrawLine( paint,x1, y1, x2, y2); } } } </PRE> </DIV> <P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"> </P> <P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"> </P> <P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt">形状 类</P> <P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"> </P> <DIV class=Section0> <PRE class=c# name="code">using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace WindowsFormsApplication1 { public abstract class NetShape { public abstract void draw(Graphics g); } } </PRE> </DIV> </SPAN> <P></P><DIV class=Section0> <PRE class=c# name="code"></PRE> </DIV> 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; namespace WindowsFormsApplication1 { public partial class Form1 : Form { int x1, y1, x2, y2,x3,y3; Graphics g; Pen paint = new Pen(Color.Red, 3); String name; List<NetShape> shapes = new List<NetShape>(); NetShape shape; public Form1() { InitializeComponent(); g = this.panel1.CreateGraphics(); this.panel1.Paint += new PaintEventHandler(this.OnPaint); this.panel1.MouseMove += new MouseEventHandle(this.F_MouseMove); } private void Form1_Load(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { name = ((Button)sender).Name; } public void Form1_MouseDown(object sender, MouseEventArgs e) { x1 = e.X; y1 = e.Y; } public void F_MouseMove(object sender, MouseEventArgs e) { if (name.Equals("button1")) { x3 = e.X; y3 = e.Y; shape = new ImpLine(paint, x1, y1, x3, y3); shape.draw(g); shapes.Add(shape); x1 = x3; y1 = y3; } } public void Form1_MouseUp(object sender, MouseEventArgs e) { x2 = e.X; y2 = e.Y; if (name.Equals("button2")) { shape = new ImpLine(paint, x1, y1, x2, y2); } shape.draw(g); shapes.Add(shape); } public void OnPaint(object sender, PaintEventArgs e) { for(int i=0;i < shapes.Count;i++) { NetShape shape = shapes.ElementAt<NetShape>(i); shape.draw(g); } } } } 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; namespace WindowsFormsApplication1 { public partial class Form1 : Form { int x1, y1, x2, y2,x3,y3; Graphics g; Pen paint = new Pen(Color.Red, 3); String name; List<NetShape> shapes = new List<NetShape>(); NetShape shape; public Form1() { InitializeComponent(); g = this.panel1.CreateGraphics(); this.panel1.Paint += new PaintEventHandler(this.OnPaint); this.panel1.MouseMove += new MouseEventHandler (this.F_MouseMove); } private void Form1_Load(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { name = ((Button)sender).Name; } public void Form1_MouseDown(object sender, MouseEventArgs e) { x1 = e.X; y1 = e.Y; } public void F_MouseMove(object sender, MouseEventArgs e) { if (name.Equals("button1")) { x3 = e.X; y3 = e.Y; shape = new ImpLine(paint, x1, y1, x3, y3); shape.draw(g); shapes.Add(shape); x1 = x3; y1 = y3; } } public void Form1_MouseUp(object sender, MouseEventArgs e) { x2 = e.X; y2 = e.Y; if (name.Equals("button2")) { shape = new ImpLine(paint, x1, y1, x2, y2); } shape.draw(g); shapes.Add(shape); } public void OnPaint(object sender, PaintEventArgs e) { for(int i=0;i < shapes.Count;i++) { NetShape shape = shapes.ElementAt<NetShape>(i); shape.draw(g); } } } } 直线类 C#代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace WindowsFormsApplication1 { public class ImpLine:NetShape { int x1, y1, x2, y2; Pen paint; public ImpLine(Pen paint,int x1, int y1, int x2, int y2) { this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; this.paint = paint; } public override void draw(Graphics g) { g.DrawLine( paint,x1, y1, x2, y2); } } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace WindowsFormsApplication1 { public class ImpLine:NetShape { int x1, y1, x2, y2; Pen paint; public ImpLine(Pen paint,int x1, int y1, int x2, int y2) { this.x1 = x1; this.x2 = x2; this.y1 = y1; this.y2 = y2; this.paint = paint; } public override void draw(Graphics g) { g.DrawLine( paint,x1, y1, x2, y2); } } } 形状类 C#代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace WindowsFormsApplication1 { public abstract class NetShape { public abstract void draw(Graphics g); } } using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Drawing; namespace WindowsFormsApplication1 { public abstract class NetShape { public abstract void draw(Graphics g); } }
相关推荐
在本文中,我们将深入探讨如何使用C#和GDI+(Graphics Device Interface)来实现一个简单的画板应用程序。GDI+是.NET Framework中用于图形绘制的基础组件,它提供了丰富的功能,使得开发者可以创建出交互式的可视化...
在C#编程环境中,开发一个具备画板功能的应用程序是一项挑战性的任务,特别是要实现图片的导入、绘制、缩放和拖动等交互操作。在本文中,我们将深入探讨如何利用C#实现这样的功能,以及如何处理可能遇到的Bug。 ...
总结来说,这个C#画板项目是一个基于Windows平台的绘画应用,利用C#语言和.NET框架实现,提供了多种绘画功能,但缺少选区工具。对于想要深入了解或改进这个项目的人员,需要熟悉C#编程、图形界面设计以及可能的WPF或...
在C#编程环境中,开发一个简单的画板程序可以是一个很好的学习项目,它涉及到图形用户界面(GUI)的设计、事件处理以及基本的绘图操作。...同时,这也是一个很好的练习,可以提升问题解决和软件工程能力。
这个“C# winform 画板”项目显然旨在教授如何利用C#语言和Windows Forms框架来实现一个基本的绘图应用程序。让我们详细探讨一下这个项目中的关键知识点。 首先,`WinForm`是.NET Framework提供的一个用于构建桌面...
【C#小画板源码】是一个基于C#编程语言实现的简易图形绘制应用程序。它为用户提供了一个基本的画布,可以在此上进行简单的绘画操作,例如绘制线条、形状、填充颜色等。这个项目对于初学者理解C#图形用户界面(GUI)...
标题 "用C#制作的一个小画板" 描述了一个基于C#编程语言开发的简易画板应用程序。这个程序允许用户进行基本的绘画操作,如选择不同的颜色、调整字体大小以及改变画笔粗细,同时也支持使用鼠标进行文字书写。通过这些...
本项目“C#版的画板程序”显然是一个利用C#语言实现的图形用户界面(GUI)应用,它允许用户进行基本的绘图操作,如同我们在传统的纸上画画一样。下面我们将详细讨论C#编程中的关键知识点以及如何在C#中创建一个简单...
在C#中,通过比较错误值来决定下一步应该向哪个像素移动,以尽可能接近实际线段。 4. 中点画圆算法: 中点画圆算法是计算机图形学中的经典算法,它以圆心为中心,通过迭代计算出每个像素点是否应该被绘制。在C#中,...
标题中的"C#编写的绘画板"指的是一个使用C#编程语言开发的图形用户界面应用程序,它的主要功能是提供一个类似于真实绘画板的交互体验。在这样的应用中,用户可以通过鼠标或触控设备进行绘画,创建各种图形,如圆形、...
【C#实用画板小程序实例】是一个基于C#编程语言开发的交互式图形应用程序,它提供了丰富的绘图功能,让用户可以轻松地在屏幕上绘制各种图形。这个程序的主要目标是为用户提供一个简易的画布,通过鼠标操作来实现基本...
开发者可以通过`Graphics`类实例与GDI+交互,利用其方法如`DrawLine`、`DrawRectangle`、`FillEllipse`等来实现画板的各种功能。 此外,为了实现撤销/重做功能,开发者可能会使用堆栈数据结构来存储每次绘制操作的...
【C#简易画板代码】是一个使用C#编程语言实现的简单绘图应用程序,它提供了基本的绘画功能,包括新建画布、保存作品、选取颜色以及调整画笔大小。此外,用户还可以绘制多种图形,如直线、曲线、矩形、圆形等。这个...
【C#简单画板】是一个基于C#编程语言开发的简易绘图应用程序,它提供了基本的绘画功能,如画笔绘制、直线绘制以及颜色选择,适用于Windows 7操作系统,并采用了Ribbon界面设计。这个项目是学习C# GUI编程和图形用户...
【C# GDI+画板实验报告】是一个关于使用C#编程语言和GDI+图形设备接口实现简单画图程序的实验项目。该实验旨在帮助学生熟悉Graphics类的使用,掌握创建画板框架的方法,并提升将理论知识应用于实践的编程能力。 在...
在本项目"C#326-画板工具,源代码"中,我们主要探讨的是如何使用C#编程语言开发一个基本的画板应用程序。这个工具可能包含了一系列绘画和图形编辑功能,供用户进行创意表达或者进行简单的图形设计。C#是微软推出的一...
"C# 画画板 仿window画画板"项目是一个利用C#语言构建的简单画板应用,旨在模仿Windows操作系统内建的画图工具。这个项目对于初学者来说是一个很好的实践平台,它可以帮助开发者了解图形用户界面(GUI)的设计,以及...
在本项目中,“c#简易画板”是一个利用C#编程语言开发的简单绘图应用程序。这个程序的主要目的是提供一个基础的平台,让用户能够进行基本的绘画操作,如绘制直线、矩形等基本图形。下面将详细介绍这个项目涉及到的C#...
【C#简易画板】是基于C#编程语言和GDI+图形库开发的一个简单绘画应用程序。这个项目展示了如何利用GDI+的功能来创建一个基本的用户界面,允许用户进行自由绘图。GDI(Graphics Device Interface)是Windows操作系统...
总结起来,创建一个C#画板应用程序涉及了UI设计、图形绘制、用户交互、文件操作等多个方面。通过学习和实践,不仅可以加深对C#语言的理解,还能提升图形界面编程的能力。在开发过程中,不断调试和完善,最终可以构建...