2024-04-12 14:57:19 | 我爱编程网
轨迹采集应该可以从相应端口取得数据,核心是坐标转换,这部分需要根据相应的计算逻辑进行映射,展示逻辑相对来说简单可以利用JPanel进行绘制,下面是示例代码.
public class ContentPanel extends JPanel {
private static final long serialVersionUID = -4117349446067707681L;
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.BLUE);
Dimension size = this.getSize();
int startX = 10;
int startY = 10;
int width = size.width - 20;
int height = size.height - 20;
g.drawRect(startX, startY, width, height);
for (int y = startY + 10; y < (startY + height); y += 10) {
g.drawLine(startX, y, startX + width, y);
}
}
}
import javax.swing.*;
import javax.swing.Timer;
import java.awt.*;
import java.awt.image.*;
import java.util.*;
/**
* 面板上的光标改变成为手型
* @author hardneedl
*/
final class RandomPointDemo extends JFrame{
private static final Dimension SIZE = new Dimension(600,400);
public Dimension getMinimumSize() {return SIZE;}
public Dimension getMaximumSize() {return SIZE;}
public Dimension getPreferredSize() {return SIZE;}
public String getTitle() {return "RandomPointDemo";}
/*画笔*/
private interface Brush extends Observer {
void paint(Graphics g);
Component getComponent();
}
abstract private class PointBrush implements Brush {
private static final int OFFSET = 2;
private BufferedImage getImage() {
return image;
}
private BufferedImage image;
//上一次点的位置
private int lastX, lastY;private Point newPoint;
PointBrush(int x,int y) {
lastX = x;lastY = y;
image = new BufferedImage(2000,2000,BufferedImage.TYPE_INT_RGB);
}
public void paint(Graphics g2) {
if (newPoint != null&&image != null) {
g2.setColor(Color.ORANGE);
g2.drawLine(lastX,lastY,newPoint.x,newPoint.y);
g2.setColor(Color.MAGENTA);
g2.fillRect(newPoint.x - OFFSET, newPoint.y - OFFSET, OFFSET<<1, OFFSET<<1);
g2.dispose();
lastY = newPoint.y;
lastX = newPoint.x;
}
}
public void update(Observable o, Object arg) {
if(arg instanceof Point) {
newPoint = (Point) arg;
paint(image.createGraphics());
}
}
}
/*画布*/
private class Canvas extends JComponent {
private void setBrush(PointBrush brush) {
this.brush = brush;
}
private PointBrush brush;
private Canvas(PointBrush brush) {
super();
this.brush = brush;
}
private Canvas() {
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (isVisible()&&null!=brush) {
Graphics2D g2 = brush.getImage().createGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
brush.paint(g2);
g.drawImage(brush.getImage(),0,0,this);
}
}
}
private Timer timer;我爱编程网
private Canvas canvas;
private RandomPointDemo() {
super();
init();
addListeners();
doLay();
}
private void init(){
canvas = new Canvas();
PointBrush brush = new PointBrush(canvas.getWidth()>>1, canvas.getHeight()>>1) {
public Component getComponent() {
return canvas;
}
};
canvas.setBrush(brush);
timer = new Timer(500, e -> {
Random random = new Random(System.currentTimeMillis());
Point newPoint = new Point(
random.nextInt(canvas.getWidth()),
random.nextInt(canvas.getHeight())
);
brush.update(null, newPoint);
canvas.paintImmediately(canvas.getBounds());
});
timer.start();
}
private void addListeners(){
}
private void doLay(){
Container container = getContentPane();
container.add(canvas, BorderLayout.CENTER);
pack();
setVisible(true);
}
public static void main(String... args) {
System.setProperty("swing.defaultlaf","com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.invokeLater(RandomPointDemo::new);
}
}
我爱编程网(https://www.52biancheng.com)小编还为大家带来关于JAVA程序流程图的编写的相关内容。
流程图如下:首先,你的JAVA程序是用来进行选手评分的。为保证公正性,所以一般都会以去掉一个最高分,在去掉一个最低分,求和算平均值的方法来算的。float[] score={8.5f,9.5f,8,7,9,8.7f,6.8f,10,7.9f,8.9f};score数组中,即为各个评委给出的的结果。通过Arrays.sort(score);将数组由小到达排序,即为:float[] score={6.8f,7.0f,7.9f,8.0f,8.5f,8.7f,8.9f,9.0f,9.5f,10};之后用for循环求和,在求和过程中为去掉最低分,所以从索引j=1开始累加(数组索引由0开始)为去掉最高分,加到索引j=score.length-1(数组个数-1)。此时for循环后,sum即为去掉最高分和最低分的求和了。之后的事情,相信你就明白了,我就不多说了。
java运行的五个步骤?Java程序从源文件创建到程序运行要经过两大步骤:1、源文件由编译器编译成字节码(ByteCode)2、字节码由java虚拟机解释运行。因为java程序既要编译同时也要经过JVM的解释运行,所以说Java被称为半解释语言("semi-interpreted"language)。下面通过以下这个java程序,来说明java程序从编译到最后运行的整个流程。
pythonpygame中如何让角色移动到地图中间在按下方向键向右后地图向左移动?pygame.Surface.get_rect()方法返回值是一个Rect对象,该对象有一个move()方法可以用于移动矩形。move(x,y)函数有两个参数,第一个参数是X轴移动的距离,第二个参数是Y轴移动的距离。窗口的左上角是(0,0),如果是move(100,50)就是左移100下移50。Python
关于java中模拟抛物线轨迹的问题看了这套题目感觉很有兴趣,就花了一个中午亲手给你写了一个类似的例子,相信可以帮助你对这个游戏有很好的理解,从右向左那个是僵尸,点一下鼠标就出现植物,我只是起到一个抛砖引玉的作用。代码如下(绝对可以用的代码):import java.awt.Dimension;import java.awt.Graphics;import java.awt
怎么画太极图画太极图的步骤如下,仅供参考:1、先画一个正圆;2、在正圆的心直径位置,左右各一部分画一个“S”,就将正圆分成了两个部分。3、在左右两部分的小圆窝里各画一个小圆。4、最后将一部分涂成黑色,其中的小圆留白,白色部分的圆形涂成黑色。太极图中的黑白即代表阴阳,白色为阳,黑色为阴,里面的两个小圆点表示阳中有阴,阴中有阳。太极图展现了一种相互转化,相对统一
Php中生成6位随机数并显示Php中生成6位随机数并显示实现如下:1、使用shuffle函数生成随机数。<?php$arr=range(100000,999999);shuffle($arr);foreach($arr as $values){echo $values."";//显示随机数}?>2、使用array_un
Python如何画cos和sin的图啊?在python自带编辑器IDLE中,新建脚本如作图.py导入需要的模块importnumpyasnpimportscipyasspimportpylabaspl2输入代码x=np.linspace(0,4*np.pi,100)pl.plot(x,pl.sin(x))pl.show()
怎么不安装类库用php画曲线图和饼图?php本身没有画图功能。都是通过GD库等外部扩展实现的。如果只是单纯的曲线图和饼图,可以考虑使用前端js代码实现,比如iChart等插件都能做出很漂亮的示意图。比GD搞出来的要漂亮,而且是动态的,可以根据点击进行交互。如何在wps里绘制函数图像,或者可以用嘛画函数图像如果只要函数图象的话,可以画出来。简单的比如y=x*x,你做一个表,x分别从
下列有关PHP函数的叙述中,正确的是()。下列有关PHP函数的叙述中,正确的是()。A.在调用的一个函数中,必须要有return语句用于返回B.在调用的一个函数中,也可以调用这个函数本身C.在调用的一个函数中,可以调用另外一个函数D.在程序代码的书写顺序上,PHP函数必须先书写定义代码,后书写调用代码正确答案:BCphp面试遇到一个问题,思考出了一点门道,但
2025-02-01 20:24:39
2024-01-05 14:11:24
2025-02-12 03:21:37
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-11-22 05:08:01