Tag: 线

Java – 子像素线精度是否需要AffineTransform?

我之前从未使用过Java绘图方法,所以我决定深入研究并创建一个模拟时钟作为PoC。 除了手之外,我画了一个钟面,包括刻度标记,分钟/小时。 我使用简单的sin / cos计算来确定圆周线的位置。 但是,我注意到由于分钟刻度非常短,因此线条的角度看起来不对。 我确定这是因为Graphics2D.drawLine()和Line2D.double()方法都无法以子像素精度绘制。 我知道我可以绘制来自中心的线条并用圆圈遮盖它(以创建更长,更准确的线条),但这似乎是一种不优雅且昂贵的解决方案。 我已经做过一些关于如何做到这一点的研究,但我遇到的最好的答案是使用AffineTransform 。 我假设我只能使用带旋转的AffineTransform ,而不必执行超级采样。 这是以亚像素精度绘制的唯一/最佳方法吗? 或者是否有更快的解决方案? 编辑 :我已经将RenderingHint设置为Graphics2D对象。 根据要求,这里有一些代码(没有完全优化,因为这只是一个PoC): diameter = Math.max(Math.min(pnlOuter.getSize().getWidth(), pnlOuter.getSize().getHeight()) – 2, MIN_DIAMETER); for (double radTick = 0d; radTick < 360d; radTick += 6d) { g2d.draw(new Line2D.Double( (diameter / 2) + (Math.cos(Math.toRadians(radTick))) * diameter / 2.1d, (diameter / 2) + (Math.sin(Math.toRadians(radTick))) * diameter / […]

在java中绘制线条

此代码存在许多问题 public class LineEx extends JFrame implements MouseMotionListener,MouseListener{ int x1,y1,x2,y2; public LineEx(){ JLabel image=new JLabel(“”); JFileChooser chooser=new JFileChooser(); chooser.setCurrentDirectory(new File(“.”)); int r=chooser.showOpenDialog(new JFrame()); File file=chooser.getSelectedFile(); if(r==JFileChooser.APPROVE_OPTION){ try { BufferedImage bf; bf = ImageIO.read(file); ImageIcon icon=new ImageIcon(bf); image.setIcon(icon); image.setHorizontalAlignment(JLabel.CENTER); } catch (IOException ex) { Logger.getLogger(LineEx.class.getName()).log(Level.SEVERE, null, ex); } } JScrollPane jsp=new JScrollPane(image); getContentPane().add(jsp); image.addMouseListener(this); image.addMouseMotionListener(this); this.pack(); […]

捕捉指向一条线

我有两个GPS坐标连接在一起形成一条线。 我还有一个GPS点,它靠近线路,但从未完全在线路上。 我的问题是,如何找到沿给定点的最近点?

如何用scala方式解析基于行的文本文件(.mht)?

我想使用scala来解析.mht文件,但我发现我的代码与Java完全一样。 以下是mht文件示例: From: Subject: Tencent IM Message MIME-Version: 1.0 Content-Type:multipart/related; charset=”utf-8″ type=”text/html”; boundary=”—-=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19″ ——=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19 Content-Type: text/html Content-Transfer-Encoding:7bit … ——=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19 Content-Type:image/jpeg Content-Transfer-Encoding:base64 Content-Location:{64172C34-99E7-40f6-A933-3DDCF670ACBA}.dat /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMU FRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU FBQUFBQUFBT/wAARCAJwA7sDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi ——=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19 Content-Type:image/jpeg Content-Transfer-Encoding:base64 Content-Location:{64172C34-99E7-40f6-A933-3DDCF670ACBA}.dat /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMU FRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU FBQUFBQUFBT/wAARCAJwA7sDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi ——=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19 Content-Type:image/jpeg Content-Transfer-Encoding:base64 Content-Location:{64172C34-99E7-40f6-A933-3DDCF670ACBA}.dat /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMU FRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU FBQUFBQUFBT/wAARCAJwA7sDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi ——=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19 有一个叫做boundary的特殊线,它是一个分隔线: ——=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19 第一部分是关于此文件的一些信息,可以忽略。 以下是4个块,第一个是html文件,其他是带有base64编码文本的jpg图像。 如果我使用Java,代码如下: BufferedReader reader = new […]

在BufferedImage中绘制多条线

我试图在bufferedimage上绘制水平和垂直线条。 它应该看起来像一个细胞网格。 但是当我运行代码时,我只看到两行:最左边的行和最上面的行(即从0,0到0的行,图像的高度和0,0到图像的宽度,0)下面是代码片段: BufferedImage mazeImage = new BufferedImage(imgDim.width, imgDim.height, BufferedImage.TYPE_INT_RGB); Graphics2D g2d = mazeImage.createGraphics(); g2d.setBackground(Color.WHITE); g2d.fillRect(0, 0, imgDim.width, imgDim.height); g2d.setColor(Color.BLACK); BasicStroke bs = new BasicStroke(2); g2d.setStroke(bs); // draw the black vertical and horizontal lines for(int i=0;i<21;i++){ g2d.drawLine((imgDim.width+2)*i, 0, (imgDim.width+2)*i, imgDim.height-1); g2d.drawLine(0, (imgDim.height+2)*i, imgDim.width-1, (imgDim.height+2)*i); } 和覆盖绘画方法: public void paint(Graphics g) { g.drawImage(mazeImage, 0, 0, this); […]

计算两点之间的角度 – java

我需要计算两点之间的角度,其中一个固定点通过一条线与给定的两点相连。 这是一张图片,说明了我的需求: 这是我到目前为止所尝试的: public static float GetAngleOfLineBetweenTwoPoints(float x1, float x2, float y1, float y2) { float xDiff = x2 – x1; float yDiff = y2 – y1; return (float) (Math.atan2(yDiff, xDiff) * (180 / Math.PI)); } 毫无意义地说,它没有提供正确的答案。

迭代java中一行/路径上的每个点

我是新手使用迭代器,并想知道如何迭代线段上的每个点(Line2D.Double,确切地说) – 我需要检查线上的每个点是否满足某些要求。 另外,给定一个路径对象(如GeneralPath),你会如何做同样的事情(遍历形状轮廓上的每个点)? 理想情况下,我喜欢这样的东西(有一条线或一条路径): Line2D line = new Line2D.Double(p1,p2); for (Point2D point : line) { point.callSomeMethod(); }

Java-多边形和直线的交点

有没有任何函数可以给我一个Polygon和Line2D的交点? 我有一个Polygon和一个我知道相交的线段我希望交点的实际值不是布尔答案。

如何在Java中绘制有向箭头线?

我想在Java中绘制一条有向箭头线。 目前,我正在使用java.awt.Line2D.Double类来绘制一条线 g2.setStroke(new BasicStroke(2.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL)); // g2 is an instance of Graphics2D g2.draw(new Line2D.Double(x1,y1,x2,y2)); 但只显示该行,并且不显示有向箭头。 BasicStroke.Join_BEVEL用于绘制有向箭头。 当两个线段相遇时应用它。 我绘制的线条符合矩形的边框,但没有绘制有向箭头。 只绘制一条简单的线条。 有什么我想念的吗?

检查是一个点(x,y)是在直线上绘制的两个点之间

我在两点A(x,y)— B(x,y)之间绘制了一条线。现在我有第三个点C(x,y)。 我想知道如果C位于A和B之间的线上。我想用java语言来做。 我找到了几个类似的答案。 但是,都有一些问题,没有人是完美的。