Java实现简单的绘图软件.docx
- 文档编号:12784994
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:14
- 大小:158.29KB
Java实现简单的绘图软件.docx
《Java实现简单的绘图软件.docx》由会员分享,可在线阅读,更多相关《Java实现简单的绘图软件.docx(14页珍藏版)》请在冰豆网上搜索。
Java实现简单的绘图软件
Java实现简单的绘图软件
项目效果图:
项目源代码:
importjava.awt.*;
importjava.awt.event.*;
importjava.awt.geom.Ellipse2D;
importjava.awt.geom.Line2D;
importjava.awt.geom.Rectangle2D;
importjava.awt.image.BufferedImage;
importjava.io.File;
importjava.io.IOException;
privatefloatend_y=0;
privatefloatwidth=0;
privatefloatheight=0;
privatefinalintAREA_WIDTH=700;
privatefinalintAREA_HEIGHT=400;
privateLine2D.Floatline;
privateRectangle2D.Floatrect;
privateEllipse2D.Floatellipse;
privateFileimageFile;
BufferedImageimage=newBufferedImage(AREA_WIDTH,AREA_HEIGHT,BufferedImage.TYPE_INT_RGB);
Graphics2Dg2=(Graphics2D)image.getGraphics();
privateJFrameframe=newJFrame("简单手绘程序");
privateDrawPaneldrawArea=newDrawPanel();
JButtonbuttonShowColor=newJButton("");
publicvoidinit(){
g2.fillRect(0,0,AREA_WIDTH,AREA_HEIGHT);
g2.setColor(Color.black);
drawArea.setPreferredSize(newDimension(AREA_WIDTH,AREA_HEIGHT));
drawArea.addMouseMotionListener(newMouseMotionAdapter()
{
publicvoidmouseDragged(MouseEvente)
{
do_mouseDragged(e);
}
});
drawArea.addMouseListener(newMouseAdapter()
{
publicvoidmousePressed(MouseEvente1){
do_mousePressed(e1);
}
publicvoidmouseReleased(MouseEvente)
{
g2.setColor(color);
g2.setStroke(stroke);
endFlag=typeFlag;
drawArea.repaint();
}
publicvoidmouseEntered(MouseEvente){
frame.setCursor(newCursor(Cursor.CROSSHAIR_CURSOR));
}
publicvoidmouseExited(MouseEvente){
frame.setCursor(null);
}
});
frame.add(drawArea);
JMenuBarmb=newJMenuBar();
JMenumenuFile=newJMenu("文件");
JMenuItemmenuItemSave=newJMenuItem("保存");
menuItemSave.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
do_save_actionPerformed(arg0);
}
});
JMenuItemmenuItemOpen=newJMenuItem("打开");
menuItemOpen.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
try{
do_open_actionPerformed(arg0);
}catch(IOExceptione){
//TODO自动生成的catch块
e.printStackTrace();
}
}
});
JMenuItemmenuItemExit=newJMenuItem("退出");
menuItemExit.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
System.exit(0);
}
});
menuFile.add(menuItemSave);
menuFile.add(menuItemOpen);
menuFile.add(menuItemExit);
mb.add(menuFile);
JPanelbuttonPanel=newJPanel();
FlowLayoutlayout=newFlowLayout(FlowLayout.CENTER,20,20);
buttonPanel.setLayout(layout);
buttonPanel.setBackground(Color.gray);
JButtonbuttonDraw=newJButton("绘图");
buttonDraw.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
typeFlag=1;
}
});
buttonPanel.add(buttonDraw);
JButtonbuttonLine=newJButton("直线");
buttonLine.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
typeFlag=2;
}
});
buttonPanel.add(buttonLine);
JButtonbuttonRect=newJButton("矩形");
buttonRect.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
typeFlag=3;
}
});
buttonPanel.add(buttonRect);
JButtonbuttonEllipse=newJButton("椭圆");
buttonEllipse.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
typeFlag=4;
}
});
buttonPanel.add(buttonEllipse);
JButtonbuttonDrop=newJButton("清除");
buttonDrop.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
typeFlag=5;
g2.setColor(Color.white);
g2.fillRect(0,0,AREA_WIDTH,AREA_HEIGHT);
drawArea.repaint();
}
});
buttonPanel.add(buttonDrop);
JButtonbuttonColorChoose=newJButton("选择颜色");
buttonColorChoose.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventarg0){
do_buttonColorChoose_actionPerformed(arg0);
}
});
buttonPanel.add(buttonColorChoose);
buttonShowColor=newJButton("");
buttonPanel.add(buttonShowColor);
JLabellabel=newJLabel("边框:
");
buttonPanel.add(label);
JComboBoxcombox=newJComboBox();
for(inti=1;i<=36;i++){
combox.addItem(i);
}
combox.addItemListener(newItemListener(){
publicvoiditemStateChanged(ItemEvente){
strokeTemp=Integer.parseInt(e.getItem().toString());
stroke=newBasicStroke(strokeTemp);
}
});
buttonPanel.add(combox);
frame.add(buttonPanel,BorderLayout.SOUTH);
frame.add(mb,BorderLayout.NORTH);
frame.setBackground(Color.gray);
frame.pack();
frame.setVisible(true);
}
publicstaticvoidmain(String[]args)
{
newImageDraw().init();
}
classDrawPanelextendsJPanel
{
publicvoidpaint(Graphicsg)
{
Graphics2Dg2=(Graphics2D)g;
g2.clearRect(0,0,AREA_WIDTH,AREA_HEIGHT);
g2.setColor(color);
g2.setStroke(stroke);
g2.drawImage(image,0,0,null);
if(typeFlag==2){
line=newLine2D.Float(start_x,start_y,end_x,end_y);
g2.draw(line);
}
if(typeFlag==3){
rect=newRectangle2D.Float(start_X,start_Y,width,height);
g2.draw(rect);
}
if(typeFlag==4){
ellipse=newEllipse2D.Float(start_X,start_Y,width,height);
g2.draw(ellipse);
}
if(typeFlag==5){
g2.setColor(Color.white);
g2.fillRect(0,0,AREA_WIDTH,AREA_HEIGHT);
}
}
}
privatevoiddo_save_actionPerformed(ActionEventarg0){
//TODO自动生成的方法存根
JFileChooserchooser=newJFileChooser();
chooser.setSelectedFile(newFile(imageFile.getName()));
intoption=chooser.showSaveDialog(null);
if(option==JFileChooser.APPROVE_OPTION){
Filefile=chooser.getSelectedFile();
try{
ImageIO.write(image,"jpg",file);
}catch(IOExceptione){
//TODO自动生成的catch块
e.printStackTrace();
}
}
}
privatevoiddo_open_actionPerformed(ActionEventarg0)throwsIOException{
//TODO自动生成的方法存根
JFileChooserchooser=newJFileChooser();
chooser.setFileFilter(newFileNameExtensionFilter("图片文件","jpg","jpeg","jif"));
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
intoption=chooser.showOpenDialog(null);
if(option==JFileChooser.APPROVE_OPTION){
imageFile=chooser.getSelectedFile();
ImagesourceImage=ImageIO.read(imageFile);
g2.drawImage(sourceImage,0,0,sourceImage.getWidth(null),sourceImage.getHeight(null),null);
drawArea.repaint();
}
}
privatevoiddo_buttonColorChoose_actionPerformed(ActionEventarg0){
//TODO自动生成的方法存根
JColorChooserchooser=newJColorChooser();
color=chooser.showDialog(null,"请选取颜色",Color.black);
buttonShowColor.setBackground(color);
}
privatevoiddo_mouseDragged(MouseEvente){
end_x=e.getX();
end_y=e.getY();
width=Math.abs(end_x-start_x);
height=Math.abs(end_y-start_y);
if(end_x<=start_x&&end_y<=start_y){
start_X=start_x-width;
start_Y=start_y-height;
}
if(end_x>start_x&&end_y start_Y=start_y-height; start_X=start_x; } if(end_x<=start_x&&end_y>=start_y){ start_Y=start_y; start_X=start_x-width; } if(end_x>=start_x&&end_y>=start_y){ start_Y=start_y; start_X=start_x; } if(typeFlag==1){ if(pre_x>0&&pre_y>0) { line=newLine2D.Float(pre_x,pre_y,end_x,end_y); g2.setColor(color); g2.setStroke(stroke); g2.draw(line); } pre_x=e.getX(); pre_y=e.getY(); drawArea.repaint(); }else{ drawArea.repaint(); } } privatevoiddo_mousePressed(MouseEvente1){ //TODO自动生成的方法存根 width=0; height=0; start_x=end_x=pre_x=e1.getX(); start_y=end_y=pre_y=e1.getY(); if(endFlag==2){ g2.draw(line); } if(endFlag==3){ g2.draw(rect); } if(endFlag==4) { g2.draw(ellipse); } drawArea.repaint(); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 实现 简单 绘图 软件