что эквивалентно методу draw (java.awt.Graphics2D graphics) в Android? - PullRequest
1 голос
/ 21 января 2012

Я работаю над PowerPointPresentation (.ppt) для преобразования файлов .ppt в изображения .png в платформе ANDROID.Для реализации этого я использую Apache Poi Api.В классе slide есть метод draw(java.awt.Graphics2D graphics), в котором переданный параметр равен Graphics2D. Но в Android этот класс не поддерживается, вместо этого мы используем canvas. Мой вопрос заключается в следующем:Есть какой-либо эквивалентный draw(java.awt.Graphics2D graphics) метод для Android, потому что в отрицательном случае я должен переписать Api.Так что дайте мне лучшие предложения для этого кода здесь

public final class PPT2PNG {

public static void main(String args[]) throws Exception {

    File file = new File("C:/Users/THIYAGARAJAN/Desktop/ppt52.ppt");
    int scale = 10;
    int slidenum = 0;

    FileInputStream is = new FileInputStream(file);
    SlideShow ppt = new SlideShow(is);
    is.close();

    Dimension pgsize = ppt.getPageSize();
    int width = (int) (pgsize.width * scale);
    int height = (int) (pgsize.height * scale);
    System.out.println("w" + width + "h" + height);

    Slide[] slide = ppt.getSlides();
    System.out.println(slide.length);
    for (int i = 0; i < slide.length; i++) {
        String title = slide[i].getTitle();
        System.out.println("Rendering slide " + slide[i].getSlideNumber() + (title == null ? "" : ": " + title));

        BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D graphics = img.createGraphics();
        graphics.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
        graphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
        graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
        graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);

        graphics.setPaint(Color.white);
        graphics.fill(new Rectangle2D.Float(0, 0, width, height));

        graphics.scale((double) width / pgsize.width, (double) height / pgsize.height);

        slide[i].draw(graphics);

        //String fname = file.getAbsolutePath() .replaceAll(".ppt", "-" + (i+1) + ".png");
        File fname = new File("C:/Users/THIYAGARAJAN/Desktop/" + i + ".png");
        FileOutputStream out = new FileOutputStream(fname);
        ImageIO.write(img, "png", out);
        out.close();
    }
}

private static void usage() {
    System.out.println("Usage: PPT2PNG [-scale <scale> -slide <num>] ppt");
}

}

1 Ответ

2 голосов
/ 21 января 2012

Android имеет класс Canvas, который очень похож на Java2 Graphics2D.Посмотрите на эту ссылку.

(если я вас правильно понимаю)

...