简单画图程序设计.docx
- 文档编号:2737838
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:57
- 大小:39.01KB
简单画图程序设计.docx
《简单画图程序设计.docx》由会员分享,可在线阅读,更多相关《简单画图程序设计.docx(57页珍藏版)》请在冰点文库上搜索。
简单画图程序设计
2011年01月16日 星期日
设为主页 加入收藏帮助 | 留言交流 | 退出
首页 | 主题阅读 | tags | 精彩目录 | 精品文苑 | 会员浏览我的图书馆
休闲·怡情 |
艺术 音画 美女 笑话 小游戏 壁纸 风景
健康·养生 |
健身 食疗 治病 中医 减肥 经穴 亚健康
生活·情感 |
哲理 情感 家居 母婴 美食 美容 百宝箱
文教·社会 |
读书 人文 历史 社会 教育 职场 电脑
简单的画图程序(转载)
jhl666666收录于2011-01-16阅读数:
查看
收藏数:
6
公众公开
原文来源
tags:
java图像编程
修改
以文找文
推荐给好友
如何对文章标记,添加批注?
一共有10个类,其中GBase和HBase分别是图元的基类和操作基类,比较重要的类是GraphicList和PointerHandler,这个是图形操作主要类,DefaultGraphic是矩形,Line是线,目前只做了这么两个图形,对应还有操作类(句柄),DrawPanel是画布,没什么重要的,只是分配了操作图元的句柄而以,好了,废话少说,看代码:
DrawPanel.java
=================================================================
packagedrawing;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.JFrame;
importdrawing.Handler.*;
importjavax.swing.JPanel;
/**
*
Title:
*
*
Description:
*
*
Copyright:
Copyright(c)2005
*
*
Company:
*
*@authornotattributable
*@version1.0
*/
publicclassDrawPanelextendsJPanelimplementsMouseListener,
MouseMotionListener{
publicGraphicsListgraphicsList;
publicintActiveTool;
publicCursorCursor;
HBase[]tools=newHBase[(int)HandlerType.NumberOfDrawTools];
publicDrawPanel(){
graphicsList=newGraphicsList();
tools=newHBase[(int)HandlerType.NumberOfDrawTools];
tools[(int)HandlerType.Pointer]=newPointerHandler();
tools[(int)HandlerType.DefaultGraphics]=newHBase();
tools[HandlerType.Line]=newLineHandler();
setDoubleBuffered(true);
addMouseListener(this);
addMouseMotionListener(this);
ActiveTool=HandlerType.Pointer;
setBackground(Color.white);
}
/*由mousePressed(),mouseReleased()取得示拖曳的开始与结束坐标*/
publicvoidmousePressed(MouseEvente){
if(e.getButton()==e.BUTTON1)
tools[(int)ActiveTool].OnMouseDown(this,e);
}
publicvoidmouseReleased(MouseEvente){
if(e.getButton()==e.BUTTON1)
tools[(int)ActiveTool].OnMouseUp(this,e);
}
publicvoidmouseEntered(MouseEvente){}
publicvoidmouseExited(MouseEvente){}
publicvoidmouseClicked(MouseEvente){
if(e.getClickCount()==2){
if(e.getButton()==e.BUTTON1){
ActiveTool=HandlerType.DefaultGraphics;
}else{
ActiveTool=HandlerType.Line;
}
}
}
/*mouseMoved(),mouseDragged()取得鼠标移动的每一个坐标,并调用repaint()方法*/
publicvoidmouseMoved(MouseEvente){
tools[(int)ActiveTool].OnMouseMove(this,e);
repaint();
}
publicvoidmouseDragged(MouseEvente){
tools[(int)ActiveTool].OnMouseDrag(this,e);
repaint();
}
publicvoidupdate(Graphicsg){
g.setColor(Color.white);
g.fillRect(0,0,getWidth(),getHeight());
paint(g);
}
publicvoidpaint(Graphicsg){
g.setColor(Color.white);
g.fillRect(0,0,getWidth(),getHeight());
if(graphicsList!
=null){
graphicsList.Draw(g);
}
DrawNetSelection(g);
}
/**
*DrawNetSelection
*
*@paramgGraphics
*/
privatevoidDrawNetSelection(Graphicsg){
g.setColor(Color.BLACK);
if(NetRectangle!
=null&&DrawNetRectangle)
g.drawRect(NetRectangle.x,NetRectangle.y,NetRectangle.width,
NetRectangle.height);
}
/**
*setDrawNetRectangle
*
*@parambboolean
*/
booleanDrawNetRectangle=false;
publicvoidsetDrawNetRectangle(booleanb){
DrawNetRectangle=b;
}
publicbooleanIsDrawNetRectangle(){
returnDrawNetRectangle;
}
/**
*setNetRectangle
*
*@paramrectangleRectangle
*/
RectangleNetRectangle;
publicvoidsetNetRectangle(Rectanglerectangle){
NetRectangle=rectangle;
}
publicRectanglegetNetRectangle(){
returnNetRectangle;
}
publicstaticvoidmain(String[]args){
newDrawTool();
}
}
===========================================================================
DrawTool.java(显示窗体)
============================================================================
packagedrawing;
importjava.awt.Toolkit;
importjavax.swing.SwingUtilities;
importjavax.swing.UIManager;
importjava.awt.Dimension;
importjavax.swing.JPanel;
importjava.awt.BorderLayout;
importjavax.swing.JFrame;
importjavax.swing.JButton;
importjava.awt.*;
/**
*
Title:
*
*
Description:
*
*
Copyright:
Copyright(c)2005
*
*
Company:
*
*@authornotattributable
*@version1.0
*/
publicclassDrawToolextendsJFrame{
JPanelcontentPane;
BorderLayoutborderLayout1=newBorderLayout();
DrawPaneldrawpanel=newDrawPanel();
publicDrawTool(){
try{
setDefaultCloseOperation(EXIT_ON_CLOSE);
jbInit();
}catch(Exceptionexception){
exception.printStackTrace();
}
}
/**
*Componentinitialization.
*
*@throwsjava.lang.Exception
*/
privatevoidjbInit()throwsException{
contentPane=(JPanel)getContentPane();
contentPane.setLayout(borderLayout1);
setSize(newDimension(400,300));
setTitle("糊涂仙");
show();
contentPane.add(drawpanel,java.awt.BorderLayout.CENTER);
}
}
=========================================================================
GraphicList.java
==========================================================================
packagedrawing;
importjava.util.ArrayList;
importjava.awt.Graphics;
importdrawing.Graphics.GBase;
importjava.awt.Point;
importjava.awt.Rectangle;
importdrawing.Graphics.DefaultGraphic;
/**
*
Title:
*
*
Description:
*
*
Copyright:
Copyright(c)2005
*
*
Company:
*
*@authornotattributable
*@version1.0
*/
publicclassGraphicsList{
ArrayListgraphicslist=newArrayList();
publicGraphicsList(){
}
publicvoidDraw(Graphicsg){
for(inti=0;i GBaseo=(GBase)graphicslist.get(i); o.Draw(g); } } publicvoidAdd(GBaseo){ graphicslist.add(0,o); } publicvoidRemove(GBaseo){ o.OnDelete(); graphicslist.remove(o); if(oinstanceofDefaultGraphic){ for(inti=0;i<((DefaultGraphic)o).getJoinLines().size();i++){ if(graphicslist.contains(((DefaultGraphic)o).getJoinLines(). get(i))) graphicslist.remove(((DefaultGraphic)o).getJoinLines().get( i)); } for(inti=0;i<((DefaultGraphic)o).getSplitLines().size();i++){ if(graphicslist.contains(((DefaultGraphic)o).getSplitLines(). get(i))) graphicslist.remove(((DefaultGraphic)o).getSplitLines(). get( i)); } } } publicintsize(){ returngraphicslist.size(); } publicvoidClear(){ graphicslist.clear(); } publicbooleanContains(GBaseo){ returngraphicslist.contains(o); } publicGBaseget(intindex){ if(index>=graphicslist.size()) returnnull; return(GBase)graphicslist.get(index); } /// ///选中图元的总数 /// publicintgetSelectionCount(){ intn=0; for(inti=0;i GBaseo=(GBase)graphicslist.get(i); if(o.IsSelected()) n++; } returnn; } /// ///获取选中的图元 /// /// /// publicGBaseGetSelectedObject(intindex){ intn=-1; for(inti=0;i GBaseo=(GBase)graphicslist.get(i); if(o.IsSelected()) n++; if(n==index) returno; } returnnull; } /// ///选中矩形范围内的所有图元 /// /// publicvoidSelectInRectangle(Rectanglerectangle){ UnselectAll(); for(inti=0;i GBaseo=(GBase)graphicslist.get(i); if(o.IntersectsWith(rectangle)) o.setSelected(true); } } /// ///取消选中所有图元 /// publicvoidUnselectAll(){ for(inti=0;i GBaseo=(GBase)graphicslist.get(i); if(o.IsSelected()) o.setSelected(false); } } /// ///选中所有图元 /// publicvoidSelectAll(){ for(inti=0;i GBaseo=(GBase)graphicslist.get(i); if(o.IsSelected()) o.setSelected(true); } } /// ///删除选中的图元 /// /// publicbooleanDeleteSelection(){ booleanresult=false; intn=graphicslist.size(); for(inti=n-1;i>=0;i--){ if(((GBase)graphicslist.get(i)).IsSelected()){ Objectoe=graphicslist.get(i); if(graphicslist.contains(oe)){ ((GBase)oe).OnDelete();
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 画图 程序设计