Как вывести графику оболочки в файлы JPG в туманности Затмение? - PullRequest
0 голосов
/ 27 марта 2020

У меня есть программа, которая создает визуализации данных для фондовых данных в туманности Затмение. Визуализация встроена в 2 отдельные оболочки windows. Я хочу взять эти оболочки и создать файл изображения JPG, используя ImageIO и Buffered Readers. Я пытался использовать встроенные функции в Graphics2d, но он возвращает неопределенные типы с реализацией на основе JFrame, которую я пробую на своих оболочках. Вот код, который у меня есть для одного из графиков оболочки (они одинаковы, за исключением исходного файла). Код немного длинный, поэтому у меня есть комментарий со звездочками, где я получаю сообщение об ошибке:

public class CovidPlots {

    public static void main(String[] args) {

    //Data generation code

    //Create shell window
        final Shell shell = new Shell();
        shell.setSize(300, 250);
        shell.open();

        //Define axis for plot- code omitted

        //Create bridge between Lightweight system, SWT, and draw2d
        final LightweightSystem lws = new LightweightSystem(shell);
        XYGraph xyGraph = new XYGraph();
        xyGraph.setTitle("DJIA PPS During COVID-19 Outbreak");

        //Set Axis Bounds- code omitted

        //Plot graph
        lws.setContents(xyGraph);

        //Create trace data providers
        CircularBufferDataProvider traceDataProvider = new CircularBufferDataProvider(false);
        CircularBufferDataProvider traceDataProvider2 = new CircularBufferDataProvider(false);
        traceDataProvider.setBufferSize(len);
        traceDataProvider.setCurrentXDataArray(temp);
        traceDataProvider.setCurrentYDataArray(opening);
        traceDataProvider2.setBufferSize(len);
        traceDataProvider2.setCurrentXDataArray(temp);
        traceDataProvider2.setCurrentYDataArray(closing);


        //Build graph
        Trace trace = new Trace("Opening DJI Values", xyGraph.primaryXAxis, xyGraph.primaryYAxis, traceDataProvider);
        Trace trace2 = new Trace("Closing DJI Values", xyGraph.primaryXAxis, xyGraph.primaryYAxis, traceDataProvider2);
        trace.setPointStyle(PointStyle.CIRCLE);
        trace.setTraceColor(ColorConstants.red);
        trace2.setPointStyle(PointStyle.CIRCLE);
        trace2.setTraceColor(ColorConstants.darkGreen);
        trace2.setLineWidth(0);

        //Draw
        xyGraph.addTrace(trace);
        xyGraph.addTrace(trace2);

        //Keep shell open
        Display display = Display.getDefault();
        while(!shell.isDisposed()) {
            if(!display.readAndDispatch()) {
                display.sleep();
            }
        }

        //Save image as jpeg
        try {
            BufferedImage image = new BufferedImage(300, 250, BufferedImage.TYPE_INT_RGB);
            Graphics2D graphics2d = image.createGraphics(); //**error: createGraphics is undefined for type Buffered image
            shell.getPaint(graphics2d); //**Similar error with type graphics2d
            ImageIO.write(image, "jpg", new File("C:\\Users\\zrr81\\Downloads\\COVID-19_Analysis\\COVID-19_Chart.jpg"));
            }
        catch (Exception e) {
            System.out.println("Oops");
        }

    }

...