📄 mycanvas.java
字号:
package canvassample;
import java.awt.*;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseAdapter;
import java.awt.event.AdjustmentListener;
import java.io.*;
import java.lang.*;
/**
* <p>Title: Cyber Canvas</p>
*
* <p>Description: A Canvas Application</p>
*
* <p>Copyright: Copyright (c) 2005</p>
*
* <p>Company: nupt</p>
*
* @author not attributable JScrollPane
* @version 1.0
*/
public class MyCanvas extends JPanel
{
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Color color[]={Color.BLACK,Color.blue,Color.ORANGE,Color.RED,Color.CYAN};
//Image myImage= new Image();
Image myImage=Toolkit.getDefaultToolkit().getImage("E:\\封超的资料\\awt\\images\\coreIcon.gif");
private double i=1.0,inew;
static int x1,x2,y1,y2;
static double jingdu,weidu;
double w[]={118.540918,118.840314,118.640456,118.340452,118.440823};
double z[]={32.183145 ,32.283416 ,32.583751 ,32.283241 ,32.383841 };
////数组w,z可用来接收从mif文件中读出的经纬度坐标
static double blc=1000.0;
static double xStart=118.0;
static double yStart=32.0;
int x[]=new int[1000];
int y[]=new int[1000];
BorderLayout borderLayout1 = new BorderLayout();
private JLabel staBar=new JLabel();
public MyCanvas(JLabel statusBar) {
try {
staBar=statusBar;
jbInit();
}
catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception {
this.setLayout(borderLayout1);
addMouseMotionListener(new MouseMotionAdapter(){
public void mouseMoved(MouseEvent e) {
jingdu=(double)e.getX()/(blc)+xStart;
weidu=(double)e.getY()/(blc)+yStart;
staBar.setText(" Mouse Moved @:[jingdu=" + jingdu +",weidu="+
+ weidu + "]");
}
}
);
addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {
xStart=(double)x1/(blc)+xStart;
yStart=(double)y1/(blc)+yStart;
// i/=2;
blc=blc*i/2;
staBar.setText(" Mouse Clicked blc=" + blc
);
repaint();
}
}
);
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e) {
x1=e.getX();
y1=e.getY();
staBar.setText(" Mouse prs blc=" + blc
);
//public void mouseClick
//repaint();
}
}
);
addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e) {
x2=e.getX();
y2=e.getY();
xStart=(double)x1/(blc)+xStart;
yStart=(double)y1/(blc)+yStart;
if(x1-x2!=0&&y1-y2!=0)
{
inew=Math.min(screenSize.width/Math.abs(x1-x2),screenSize.height/Math.abs(y1-y2)) ;
blc=blc*inew;
staBar.setText(" Mouse rls blc=" + blc
);
repaint();}
}
}
);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
setPreferredSize(new Dimension((int)(400*blc/10),(int)(308*blc/10)));
setSize(getPreferredSize()); //可以自动添加滚动条,并且响应滚动条事件;
g.setColor(Color.white);
g.fillRect(0,0,this.getWidth(),this.getHeight());
//System.out.println(this.getWidth());
g.setColor(Color.BLUE);
//g.drawImage(myImage,10,10,this);
//System.out.println("in paint x1="+x1+"in paint y1="+y1);
//System.out.println("in paint xstart="+xStart+"in paint ystart="+yStart);
// System.out.println("in paint blc="+blc);
// System.out.println("*****************************************");
g.translate(x1,y1);
//g.drawImage(myImage,10,10,this);
Files f=new Files();
for (int ri=0;ri<=f.regionnum;ri++)//Draw region!
{ //System.out.println("in paint regionptnum="+f.regionptnum[ri]);
for(int j=0;j<f.regionptnum[ri]-1;j++)
{ //g.setColor(color[ri%5]);
x[j]=(int)((f.ww[ri][j]-xStart)*blc);
y[j]=(int)((f.zz[ri][j]-yStart)*blc);
}
g.drawPolyline(x,y,f.regionptnum[ri]-1);
g.fillPolygon(x,y,f.regionptnum[ri]-1);
}
g.setColor(Color.BLUE);
for (int a = 0; a < w.length; a++)
{
x[a]=(int)((w[a]-xStart)*blc)-x1;
y[a]=(int)(this.getHeight()-(int)((z[a]-yStart)*blc)-y1);
}
//g.drawString(""+f.pointnum+" "+f.regionnum+" "+f.textnum,10,10);
for(int ti=0;ti<f.textnum;ti++)//Draw text!
{
Font font=new Font(f.textfontname[ti],Font.PLAIN,14+ti);
// g.setColor(color[ti]);
g.setFont(font);
g.drawString(f.text[ti],(int)((f.textx[ti]-xStart)*blc),(int)((f.texty[ti]-yStart)*blc));
//g.drawString(f.text[ti],20+30*ti,20+30*ti);
//System.out.println("in paint text[j]="+f.text[ti]);
}
g.drawPolyline(x,y,5);
g.fillPolygon(x,y,5);
g.drawString("test",100,100);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -