已知很多点的坐标,用java把点显示出来,并且重复越多的点显示的颜色越深
1条回答 默认 最新
- ChatGPTᴼᴾᴱᴺᴬᴵ 2023-03-24 19:26关注
该回答引用ChatGPT-3.5
要在Java中显示坐标点,可以使用SWT(Standard Widget Toolkit)视图。SWT是一个Java图形界面库,它提供了创建本地GUI控件的API,可以与操作系统的本地GUI库进行交互。
以下是一个简单的Java SWT代码示例,可以绘制点并且根据点出现的频率设置点的颜色深度。代码示例中使用的是SWT的Canvas类,它是一个可绘制的画布控件,可以在上面绘制图形:
import java.util.*; import org.eclipse.swt.*; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Point; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; public class PointFrequencyColor { public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new FillLayout()); Canvas canvas = new Canvas(shell, SWT.NONE); List<Point> points = Arrays.asList( new Point(100, 100), new Point(150, 150), new Point(200, 200), new Point(150, 150), new Point(150, 150), new Point(250, 250), new Point(200, 200), new Point(250, 250), new Point(200, 200) ); canvas.addPaintListener(new PaintListener() { @Override public void paintControl(PaintEvent e) { Map<Point, Integer> pointFrequency = new HashMap<>(); for (Point p : points) { pointFrequency.put(p, pointFrequency.getOrDefault(p, 0) + 1); } int maxFrequency = pointFrequency.values().stream().max(Integer::compareTo).orElse(0); GC gc = e.gc; for (Map.Entry<Point, Integer> entry : pointFrequency.entrySet()) { Point p = entry.getKey(); int frequency = entry.getValue(); double colorFactor = (double) frequency / maxFrequency; int colorIntensity = (int) (colorFactor * 255); Color color = new Color(display, colorIntensity, colorIntensity, colorIntensity); gc.setForeground(color); gc.drawPoint(p.x, p.y); color.dispose(); } } }); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } }
代码中定义了一个包含一些点坐标的List,然后使用一个HashMap来记录每个点出现的次数。接着,计算出所有点中出现最多的次数,以便在之后的绘制中计算点颜色深度。在绘制每个点时,先根据点出现的频率计算出颜色深度,然后使用GC类的drawPoint方法来绘制点,并将颜色设置为当前点的颜色。
运行代码后,会在一个窗口中显示出所有点,并且颜色深度越深的点出现的次数越多。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 活动选择题。最多可以参加几个项目?
- ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
- ¥15 vs2019中数据导出问题
- ¥20 云服务Linux系统TCP-MSS值修改?
- ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
- ¥20 怎么在stm32门禁成品上增加查询记录功能
- ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
- ¥50 NT4.0系统 STOP:0X0000007B
- ¥15 想问一下stata17中这段代码哪里有问题呀
- ¥15 flink cdc无法实时同步mysql数据