📄 paintdraw.java
字号:
}
else{
g.setXORMode(Color.white);
x0=x>sx?sx:x;y0=y>sy?sy:y;
if(!fill){ //没填充
if(f==8)g.drawArc(x0, y0, Math.abs(x-sx), Math.abs(y-sy),0,180);
else g.drawRoundRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy),100,100);
}//end if
else{
if(f==8) g.fillArc(x0, y0, Math.abs(x-sx), Math.abs(y-sy),0,180);
else g.fillRoundRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy),100,100);
}
x=e.getX();y=e.getY();
x0=x>sx?sx:x;y0=y>sy?sy:y;
g.setColor(c);
if(!fill){ //没填充
if(f==8) g.drawArc(x0, y0, Math.abs(x-sx), Math.abs(y-sy),0,180);
else g.drawRoundRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy),100,100);
}//end if
else{
if(f==8) g.fillArc(x0, y0, Math.abs(x-sx), Math.abs(y-sy),0,180);
else g.fillRoundRect(x0,y0,Math.abs(x-sx), Math.abs(y-sy),100,100);
}
}//end else
break;
case 10:{
x=e.getX();y=e.getY();
x0=x>sx?sx:x;y0=y>sy?sy:y;
Paint paint=new GradientPaint(x0,y0,c2,x,y,c);
g.setPaint(paint);
Ellipse2D circle=new Ellipse2D.Double(x0,y0,Math.abs(x-sx),Math.abs(y-sy));
g.fill(circle);
}break;
case 11:{ /*x=e.getX();y=e.getY();
x0=x>sx?sx:x;y0=y>sy?sy:y; */
rect=new Rectangle2D.Double(100,100,200,200);
g.setPaint(c);
g.draw(rect);
} break;
case 12:{ g.setColor(c);
rect=new Rectangle2D.Double(100,100,200,200);
g.draw(rect);
AffineTransform1=new AffineTransform();
AffineTransform1.setToRotation(Math.toRadians(rox));
g.transform(AffineTransform1);
g.fill(rect);
}break;
case 13:{ g.setColor(c);
rect=new Rectangle2D.Double(100,100,200,200);
g.draw(rect);
AffineTransform1=new AffineTransform();
AffineTransform1.setToScale(Math.toRadians(scalex),Math.toRadians(scalex));
g.transform(AffineTransform1);
g.fill(rect);
}break;
case 14:{ g.setColor(c);
rect=new Rectangle2D.Double(100,100,200,200);
g.draw(rect);
AffineTransform1=new AffineTransform();
AffineTransform1.setToTranslation(translatex,translatex);
g.transform(AffineTransform1);
g.fill(rect);
}break;
case 15:{
x=e.getX();y=e.getY();
x0=x>sx?sx:x;y0=y>sy?sy:y;
Paint paint=new GradientPaint(x0,y0,c2,x,y,c);
g.setPaint(paint);
Rectangle2D rect=new Rectangle2D.Double(x0,y0,Math.abs(x-sx),Math.abs(y-sy));
g.fill(rect);
} break;
case 16:
{ x=e.getX();y=e.getY();
x0=x>sx?sx:x;y0=y>sy?sy:y;
Paint paint=new GradientPaint(x0,y0,c2,x,y,c);
g.setPaint(Color.black);
g.setXORMode(Color.white);
g.draw3DRect(x0,y0,Math.abs(x-sx),Math.abs(y-sy),true);
}break;
case 17:{ MediaTracker tracker = new MediaTracker(frame);
tracker.addImage(image2, 0);
try { tracker.waitForID(0); }
catch (InterruptedException ex) {}
image = new BufferedImage(image2.getWidth(null),image2.getHeight(null),image.TYPE_INT_RGB);
Graphics2D bufg=image.createGraphics();
g.drawImage(image2,0,0,null);
repaint();
}
default:
}//end switch
repaint();
}
public void actionPerformed(ActionEvent e)
{ /*f=Integer.parseInt(e.getActionCommand());*/
Object source = e.getSource();
if(source==jmi2)
{JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setFileFilter(new
javax.swing.filechooser.FileFilter()
{ public boolean accept(File f)
{ String name = f.getName().toLowerCase();
return name.endsWith(".gif")
|| name.endsWith(".jpg")
|| name.endsWith(".jpeg")
|| f.isDirectory();
}
public String getDescription()
{ return "Image files";
}
});
int r = chooser.showOpenDialog(this);
if(r == JFileChooser.APPROVE_OPTION)
{ String name = chooser.getSelectedFile().getAbsolutePath();
Image loadedImage=Toolkit.getDefaultToolkit().getImage(name);
MediaTracker tracker=new MediaTracker(this);
tracker.addImage(loadedImage,0);
try{tracker.waitForID(0);}
catch(InterruptedException er){}
image=new BufferedImage(loadedImage.getWidth(null),loadedImage.getHeight(null),BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = image.createGraphics();
g2.drawImage(loadedImage, 0, 0, null);
Graphics2D g=(Graphics2D)JDrawPanel.getGraphics();
g.drawImage(image,0,0,null);
repaint();
}
}//end if
if(source==jmi3)
{
FileDialog savedialog=new FileDialog(frame,"保存图型到JPG格式",FileDialog.SAVE);
savedialog.setVisible(true);
if(savedialog.getFile()!=null)
{
try{
String fileName=savedialog.getFile();
FileOutputStream out=new FileOutputStream(fileName);
JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(out);//createJPEGEncoder(OutputStream dest) 創建可用來將圖像數據編碼為 JPEG 數據流的 JPEGImageEncoder 實例。
JPEGEncodeParam param=encoder.getDefaultJPEGEncodeParam(image);//getDefaultJPEGEncodeParam(BufferedImage bi) 創建 JPEGEncodeParam 對像的工廠方法。
param.setQuality(1.0f,false);//setQuality(float quality, boolean forceBaseline) 創建替代當前已建量化表的新量化表。
encoder.setJPEGEncodeParam(param);
encoder.encode(image);
out.close();//关闭输出流
}
catch(Exception EE)
{EE.printStackTrace();
}
}
}
repaint();
}
public void adjustmentValueChanged(java.awt.event.AdjustmentEvent e)
{ c=new Color(r1.getValue(),g1.getValue(),b1.getValue());
tt.setBackground(c);
}
public void itemStateChanged(ItemEvent e)
{ if(e.getItemSelectable() instanceof JCheckBox)
{
JCheckBox temp=(JCheckBox)e.getItemSelectable();
fill=temp.isSelected();
}
if(e.getItemSelectable() instanceof JRadioButton)
{
JRadioButton temp=(JRadioButton)e.getItemSelectable();
if(temp==op1)f=1;
else if(temp==op2)f=2;
else if(temp==op3)f=3;
else if(temp==op4)f=4;
else if(temp==op5)f=5;
else if(temp==op6)f=6;
else if(temp==op7)f=8;
else if(temp==op8)f=9;
}
if(e.getSource()==sizeChoice)
{
String selected = sizeChoice.getSelectedItem();
if(selected=="1")
{ con = 1;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
else if(selected=="3")
{ con = 3;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
else if(selected=="5")
{ con = 5;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
else if(selected=="7")
{ con = 7;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
else if(selected=="9")
{ con = 9;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
else if(selected=="11")
{ con = 11;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
else if(selected=="大")
{ con = 20;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
else if(selected=="特大")
{ con = 30;
size = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);
}
}
if(e.getSource()==eraseChoice)
{
String erasesize=eraseChoice.getSelectedItem();
if(erasesize=="5")
{
econ=5;
}
else if(erasesize=="9")
{
econ=9;
}
else if(erasesize=="13")
{
econ=13;
}
else if(erasesize=="17")
{
econ=17;
}
}
repaint();
}
public static void main(String args[])
{ JFrame.setDefaultLookAndFeelDecorated(true);
Font font=new Font("JFrame",Font.PLAIN+Font.BOLD,14);
Enumeration keys=UIManager.getLookAndFeelDefaults().keys();
while(keys.hasMoreElements())
{
Object key=keys.nextElement();
if(UIManager.get(key) instanceof Font) UIManager.put(key,font);
}
new PaintDraw();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -