سؤال

هل من الممكن تحويل أ com.vividsolutions.jts.geom.Geometry (أو فئة فرعية منه) في فئة تنفذ java.awt.Shape؟ما المكتبة أو الطريقة التي يمكنني استخدامها لتحقيق هذا الهدف؟

هل كانت مفيدة؟

المحلول

وفق:

http://lists.jump-project.org/pipermail/jts-devel/2007-May/001954.html

هناك فئة:

com.vividsolutions.jump.workbench.ui.renderer.java2D.Java2DConverter

والتي يمكن أن تفعل ذلك؟

نصائح أخرى

ألقِ نظرة أيضًا على كاتب الشكل مقدمة من مكتبة JTS.لقد استخدمت الكود التالي الذي تم قصه لتحويل كائنات هندسة jts إلى شكل awt.

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Shape;

import javax.swing.JFrame;
import javax.swing.JPanel;

import com.vividsolutions.jts.awt.ShapeWriter;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.LineString;
import com.vividsolutions.jts.geom.Polygon;

public class Paint extends JPanel{
    public void paint(Graphics g) {

        Coordinate[] coords  = new Coordinate[] {new Coordinate(400, 0),  new Coordinate(200, 200),  new Coordinate(400, 400), new Coordinate(600, 200), new Coordinate(400, 0) };
        Polygon polygon = new GeometryFactory().createPolygon(coords);

        LineString ls = new GeometryFactory().createLineString(new Coordinate[] {new Coordinate(20, 20),  new Coordinate(200, 20)});

        ShapeWriter sw = new ShapeWriter();
        Shape polyShape = sw.toShape(polygon);
        Shape linShape = sw.toShape(ls);

        ((Graphics2D) g).draw(polyShape);
        ((Graphics2D) g).draw(linShape);


    }
    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.getContentPane().add(new Paint());
        f.setSize(700, 700);
        f.setVisible(true);
    }
}

يحرر:والنتيجة تبدو مثل هذه الصورة Visualization of jts geometry objects in awt

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top