简单画图程序设计文档格式.docx
- 文档编号:22759302
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:57
- 大小:39.01KB
简单画图程序设计文档格式.docx
《简单画图程序设计文档格式.docx》由会员分享,可在线阅读,更多相关《简单画图程序设计文档格式.docx(57页珍藏版)》请在冰豆网上搜索。
健身
食疗
治病
中医
减肥
经穴
亚健康
生活·
情感
哲理
家居
母婴
美食
美容
百宝箱
文教·
社会
读书
人文
历史
教育
职场
电脑
简单的画图程序(转载)
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;
/**
*<
p>
Title:
<
/p>
*
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){
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);
publicvoidupdate(Graphicsg){
g.setColor(Color.white);
g.fillRect(0,0,getWidth(),getHeight());
paint(g);
publicvoidpaint(Graphicsg){
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(显示窗体)
============================================================================
importjava.awt.Toolkit;
importjavax.swing.SwingUtilities;
importjavax.swing.UIManager;
importjava.awt.Dimension;
importjava.awt.BorderLayout;
importjavax.swing.JButton;
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
==========================================================================
importjava.util.ArrayList;
importjava.awt.Graphics;
importdrawing.Graphics.GBase;
importjava.awt.Point;
importjava.awt.Rectangle;
importdrawing.Graphics.DefaultGraphic;
publicclassGraphicsList{
ArrayListgraphicslist=newArrayList();
publicGraphicsList(){
publicvoidDraw(Graphicsg){
for(inti=0;
i<
graphicslist.size();
i++){
GBaseo=(GBase)graphicslist.get(i);
o.Draw(g);
publicvoidAdd(GBaseo){
graphicslist.add(0,o);
publicvoidRemove(GBaseo){
o.OnDelete();
graphicslist.remove(o);
if(oinstanceofDefaultGraphic){
((DefaultGraphic)o).getJoinLines().size();
if(graphicslist.contains(((DefaultGraphic)o).getJoinLines().
get(i)))
graphicslist.remove(((DefaultGraphic)o).getJoinLines().get(
i));
((DefaultGraphic)o).getSplitLines().size();
if(graphicslist.contains(((DefaultGraphic)o).getSplitLines().
graphicslist.remove(((DefaultGraphic)o).getSplitLines().
get(
publicintsize(){
returngraphicslist.size();
publicvoidClear(){
graphicslist.clear();
publicbooleanContains(GBaseo){
returngraphicslist.contains(o);
publicGBaseget(intindex){
if(index>
=graphicslist.size())
returnnull;
return(GBase)graphicslist.get(index);
///<
summary>
///选中图元的总数
///<
/summary>
publicintgetSelectionCount(){
intn=0;
if(o.IsSelected())
n++;
returnn;
///获取选中的图元
paramname="
index"
>
<
/param>
returns>
/returns>
publicGBaseGetSelectedObject(intindex){
intn=-1;
if(n==index)
returno;
///选中矩形范围内的所有图元
rectangle"
publicvoidSelectInRectangle(Rectanglerectangle){
UnselectAll();
if(o.IntersectsWith(rectangle))
o.setSelected(true);
///取消选中所有图元
publicvoidUnselectAll(){
o.setSelected(false);
///选中所有图元
publicvoidSelectAll(){
///删除选中的图元
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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 画图 程序设计