简单画板实现的总结
一.实现简单画板需要使用的JavaAPI类:
JFrame
JPanel
JButton
JMenuBar
JMenu
JMenuItem
MouseListener
MouseEvent
ActionListener
ActionEvent
绘制图形图像的对象
Graphics
String
二. 匿名内部类
1.没有类名,不需要class。
2.在另外一个类的{}中间。
3.超过四行代码就不考虑使用,可考虑新建一个类。
三.实现一个简单画板的步骤
1.定义好界面类。
2.给按钮添加动作监听器方法,绑定事件处理类的对象。使用的是匿名内部类。
(使用参数传递)
3.给绘图面板添加动作监听器方法,绑定事件处理类的对象定义一个类实现MouseListener接口。
/**************************练习**********************************/
总结:
1.要学会灵活运用变量。当没有现成的java方法能够直接解决问题的时候,可将思路打开,思考其他可行的方法,比如可以使用变量。在这次练习中的三角形画法中,如果运用了变量,问题也就能轻松搞定了。
1).将变量作中间变量使用
exp:
声明全局变量(DrawingListener中)
private int startX, startY, endY, endX;// 中间变量,用来存储第一条线的起始点和结束点
2)将变量作计数器使用
exp:
private int count = 0;// 计数器,用来统计三角形的图形执行到第几步
2.画三角形时,画线和单击是两个不同的事件。如果你的代码是这样:
public void mouseClicked(MouseEvent e1) {
System.out.println("单击");
x3 = e1.getX();
y3 = e1.getY();
if (dr.getShapes().equals("Triangle") && count == 1) {
// 绘制三角形
g.drawLine(x1,y1, x3, y3);
g.drawLine(x2,y2, x3, y3);
//将count的值转为第一次点击三角形
count=0;
}
那么你画三角形时首先要画的第一条直线就不能成功。原因是:单击这个动作包括了按下、释放、单击三个动作。如果你的代码是如上写法,那么你的x1,x2,x3所在的坐标点都是同一个点。也就是说,你根本没在画直线,你不过是在单击而已!
所以你的代码应是这样:(其中startX是x1的中间变量,它可用来存储直线的x1的地址;
startY是y1的中间变量,它可用来存储直线的y1的地址;
endX是x2的中间变量,它可用来存储直线的x2的地址;
endY是y2的中间变量,它可用来存储直线的y2的地址;)
public void mouseClicked(MouseEvent e1) {
System.out.println("单击");
x3 = e1.getX();
y3 = e1.getY();
if (dr.getShapes().equals("Triangle") && count == 1) {
// 绘制三角形
g.drawLine(startX, startY, x3, y3);
g.drawLine(endX, endY, x3, y3);
//将count的值转为第一次点击三角形
count=0;
}
3. 要获取画布对象就必须在窗体可见之后才能获取,否则获取Null。
4. 类实现接口的时候,必须要实现接口中所有的抽象方法。就算有的抽象方法暂时用不到,也要把它放在你的类里!
5.画图形的时候,要考虑鼠标按下和释放的坐标值大小不同的情况。
exp:
if((x1>x2)&&(y1>y2)){
g.drawRect(x2, y2, Math.abs(x2 - x1), Math.abs(y2 - y1));
}
else if((x2>x1)&&(y2>y1)){
g.drawRect(x1, y1, Math.abs(x2 - x1), Math.abs(y2 - y1));
}
else if((x2>x1)&&(y1>y2)){
g.drawRect(x1, y2, Math.abs(x2 - x1), Math.abs(y2 - y1));
}
else if((x1>x2)&&(y2>y1)){
g.drawRect(x2, y1, Math.abs(x2 - x1), Math.abs(y2 - y1));
}
分享到:
相关推荐
在给定的"简单画板开发总结"中,虽然具体使用的编程语言和库未明确指出,但我们可以假设它涉及到的是基本的绘图API的使用。 1. **绘图API**:无论是哪种语言,绘图API都是画板的核心。例如,HTML5的Canvas API提供...
总结来说,【C# 2010 简易画板】是一个教学性质的项目,它展示了如何利用C# 2010和Windows Forms开发一个基本的画图应用。这个项目涵盖了GUI设计、事件处理、GDI+图形绘制以及状态管理等多个关键知识点,对于学习C#...
在IT领域,"简单画板实现...总结来说,"简单画板实现"涵盖了多种WPF和C#技术,包括UI设计、事件处理、图形绘制、数据结构和文件操作。通过理解和应用这些知识点,开发者可以创建一个功能齐全、用户友好的画板应用程序。
总结来说,实现简易画板需要掌握以下几个要点: 1. 触摸事件处理:`MotionEvent`的监听与响应。 2. 图形绘制:使用`Canvas`和`Paint`进行绘图。 3. 颜色管理:`Paint`的颜色设置和透明度调整。 4. 擦除功能:利用`...
在本文中,我们将深入探讨如何使用Java编程语言来实现一个类似于Windows操作系统中的简易画板程序。这个Java小程序将提供基本的绘图功能,使用户能够通过鼠标或触控设备进行绘画创作。 首先,我们需要理解Java GUI...
总结来说,这个Java画板程序结合了Swing组件、事件监听和图形绘制技术,提供了一个简单的平台供用户进行图形创作。通过对不同形状的绘制函数进行扩展和优化,可以进一步增强这个程序的功能,例如添加更多的图形选项...
【C#简易画板代码】是一个使用C#编程语言实现的简单绘图应用程序,它提供了基本的绘画功能,包括新建画布、保存作品、选取颜色以及调整画笔大小。此外,用户还可以绘制多种图形,如直线、曲线、矩形、圆形等。这个...
总结起来,"Flash版画板,实现撤销、预览等功能"是一个综合性的项目,它涵盖了ActionScript编程、HTML集成、用户界面设计以及交互功能的实现。这个项目不仅要求开发者具备扎实的编程技能,还需要理解用户的需求,并能...
总结,这个基于C++和OpenGL的画图板项目是一个很好的实践,它涵盖了OpenGL的基本概念、窗口管理、事件处理以及简单的图形绘制。通过学习和实现这样的项目,开发者可以深入理解OpenGL的工作流程,并为更复杂的3D图形...
在本资源"简单的jQuery网页画板涂鸦代码.zip"中,包含了一个基于jQuery实现的简易网页画板功能。这个画板允许用户通过鼠标在页面上进行涂鸦,从而实现在线绘图的效果。以下是对该技术实现的详细解析: 首先,jQuery...
总结,这个Java简易画板项目不仅锻炼了学生的编程技能,还提高了他们对GUI设计和人机交互的理解。通过这个实践,初学者将能够更好地掌握Java编程,尤其是GUI应用开发,为后续的软件开发奠定坚实的基础。
在标题提到的“wpf下inkcanvas实现画板”中,我们主要会探讨如何使用InkCanvas来创建一个简单的画板应用,其中包括了绘图、擦除等基本功能,并讨论如何通过修改代码来扩展更多的特性。 1. InkCanvas的基本使用: ...
在这个“MFC实现的Windows小画板”项目中,我们看到的是一个模仿Windows系统自带画板功能的简单应用,主要涉及图形绘制和用户交互。 **MFC应用程序框架** 在MFC中,应用程序通常由一系列相互协作的类构成,如...
在iOS应用开发中,创建一个画板功能可以让用户进行自由绘画、绘图或者手写输入。这个"iOS画板的实现"涉及到多个技术...以上就是关于iOS画板实现的关键技术点和实现策略,希望对你理解并构建自己的iOS画板应用有所帮助。
通过监听和处理鼠标事件,结合canvas的绘图API,我们可以实现从简单的线条绘制到复杂的图形编辑。这个压缩包中的代码示例正是这样的实践,对于学习和理解HTML5 canvas的画板功能具有很高的参考价值。
这个简单的画板实现的核心在于对鼠标事件的响应,以及使用OpenCV的`rectangle`和`circle`函数来在图像上绘制形状。通过调整滑动条,用户可以改变画笔颜色,实时在画板上创作。 总结来说,Python图像处理之简单画板...
在本文中,我们将深入探讨如何使用Windows Presentation Foundation(WPF)框架来实现一个简单的画板应用,这个应用允许用户进行基本的绘画操作,如拖拽、移动以及绘制直线和多种图形。WPF是.NET Framework的一部分...
该描述中提到的“windows自带的画板工具”可能是指Microsoft Paint(画图),这是一款简单的图形编辑程序,常用于基础的绘图操作。然而,在Web环境中,我们通常需要借助特定的JavaScript库或插件来实现类似的功能。...
在Android编程中,实现画板功能通常涉及自定义View和Canvas的使用。这里我们将深入探讨如何利用这两种方式来创建一个画板应用。 首先,Android中的自定义View是一种扩展标准View或 ViewGroup 类,以实现自定义绘图...