📄 sickdisplaypanel.java
字号:
/*
* Created on 2005-4-18
*/
package cie.mobile.sick;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JPanel;
/**
* @author lxm
*/
public class SickDisplayPanel extends JPanel
{
/**
* Comment for <code>serialVersionUID</code>
*/
private static final long serialVersionUID = 1L;
private RangeData data = null;
private int[] databuf;
int maxR = 3000; //mm
private boolean bDrawing = false;
double startangle;
int lastx=0, lasty=0;
int dataLength;
public SickDisplayPanel(int width, int height, int data_length)
{
databuf = new int[data_length];
this.setPreferredSize(new Dimension(width, height));
}
/* (non-Javadoc)
* @see javax.swing.JComponent#paintComponent(java.awt.Graphics)
*/
protected void paintComponent(Graphics g)
{
super.paintComponent(g);
int orginX = this.getWidth()/2;
int orginY = this.getHeight()-5;
g.setColor(Color.RED);
g.fillOval(orginX, orginY, 10, 10);
g.setColor(Color.BLACK);
double lscale = (double) this.getHeight()/(double) maxR;
double jscale = (Math.PI-2*startangle)/dataLength;
int x, y;
boolean b = true;
boolean bconnect = false;
lastx = orginX;
lasty = orginY;
for(int i=0; i<dataLength; i++)
{
b = true;
if(databuf[i]>1000){
b = false;
bconnect = false;
}
x = (int) (orginX + databuf[i]*lscale*Math.cos(i*jscale+startangle));
y = (int) (orginY - databuf[i]*lscale*Math.sin(i*jscale+startangle));
/*
if(!bconnect && b){
lastx = x;
lasty = y;
bconnect = true;
}
if(b)
{
g.drawLine(lastx, lasty, x, y);
}
lastx = x;
lasty = y;
*/
g.drawLine(orginX, orginY, x, y);
}
}
public void paintData(RangeData data)
{
this.data = data;
startangle = data.getStartAngle()*Math.PI/180.0;
data.getData(databuf);
dataLength = data.getLength();
repaint();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -