⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 swtgraphics2d.java

📁 提供JFreechart图表功能, 提供JFreechart图表功能,提供JFreechart图表功能
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
    public void setFont(Font font) {        org.eclipse.swt.graphics.Font swtFont = getSwtFontFromPool(font);        this.gc.setFont(swtFont);    }    /* (non-Javadoc)     * @see java.awt.Graphics#getFontMetrics(java.awt.Font)     */    public FontMetrics getFontMetrics(Font font) {        return SWTUtils.DUMMY_PANEL.getFontMetrics(font);    }    /* (non-Javadoc)     * @see java.awt.Graphics2D#getFontRenderContext()     */    public FontRenderContext getFontRenderContext() {        FontRenderContext fontRenderContext = new FontRenderContext(                new AffineTransform(), true, true);        return fontRenderContext;    }    /* (non-Javadoc)     * @see java.awt.Graphics2D#drawGlyphVector(java.awt.font.GlyphVector,      * float, float)     */    public void drawGlyphVector(GlyphVector g, float x, float y) {        // TODO Auto-generated method stub        }    /**     * Draws a string on the receiver. note that      * to be consistent with the awt method,      * the y has to be modified with the ascent of the font.      *      * @see java.awt.Graphics#drawString(java.lang.String, int, int)     */    public void drawString(String text, int x, int y) {        float fm = this.gc.getFontMetrics().getAscent();        this.gc.drawString(text, x, (int) (y - fm), true);    }    /* (non-Javadoc)     * @see java.awt.Graphics2D#drawString(java.lang.String, float, float)     */    public void drawString(String text, float x, float y) {        float fm = this.gc.getFontMetrics().getAscent();        this.gc.drawString(text, (int) x, (int) ( y - fm ), true);    }    /* (non-Javadoc)     * @see java.awt.Graphics2D#drawString(     * java.text.AttributedCharacterIterator, int, int)     */    public void drawString(AttributedCharacterIterator iterator, int x, int y) {        // TODO Auto-generated method stub    }    /* (non-Javadoc)     * @see java.awt.Graphics2D#drawString(     * java.text.AttributedCharacterIterator, float, float)     */    public void drawString(AttributedCharacterIterator iterator, float x,             float y) {        // TODO Auto-generated method stub    }    /* (non-Javadoc)     * @see java.awt.Graphics2D#hit(java.awt.Rectangle, java.awt.Shape, boolean)     */    public boolean hit(Rectangle rect, Shape text, boolean onStroke) {        // TODO Auto-generated method stub        return false;    }    /* (non-Javadoc)     * @see java.awt.Graphics#copyArea(int, int, int, int, int, int)     */    public void copyArea(int x, int y, int width, int height, int dx, int dy) {        // TODO Auto-generated method stub    }    /* (non-Javadoc)     * @see java.awt.Graphics2D#drawImage(java.awt.Image,      * java.awt.geom.AffineTransform, java.awt.image.ImageObserver)     */    public boolean drawImage(Image image, AffineTransform xform,            ImageObserver obs) {        // TODO Auto-generated method stub        return false;    }    /* (non-Javadoc)     * @see java.awt.Graphics2D#drawImage(java.awt.image.BufferedImage,      * java.awt.image.BufferedImageOp, int, int)     */    public void drawImage(BufferedImage image, BufferedImageOp op, int x,             int y) {        org.eclipse.swt.graphics.Image im = new org.eclipse.swt.graphics.Image(                this.gc.getDevice(), convertToSWT(image));        this.gc.drawImage(im, x, y);        im.dispose();    }    /**     * Draws an image at (x, y).     *      * @param image  the image.     * @param x  the x-coordinate.     * @param y  the y-coordinate.     */    public void drawImage(org.eclipse.swt.graphics.Image image, int x, int y) {        this.gc.drawImage(image, x, y);    }    /* (non-Javadoc)     * @see java.awt.Graphics2D#drawRenderedImage(java.awt.image.RenderedImage,     * java.awt.geom.AffineTransform)     */    public void drawRenderedImage(RenderedImage image, AffineTransform xform) {        // TODO Auto-generated method stub    }    /* (non-Javadoc)     * @see java.awt.Graphics2D#drawRenderableImage(     * java.awt.image.renderable.RenderableImage, java.awt.geom.AffineTransform)     */    public void drawRenderableImage(RenderableImage image,             AffineTransform xform) {        // TODO Auto-generated method stub    }    /* (non-Javadoc)     * @see java.awt.Graphics#drawImage(java.awt.Image, int, int,      * java.awt.image.ImageObserver)     */    public boolean drawImage(Image image, int x, int y,             ImageObserver observer) {        // TODO Auto-generated method stub        return false;    }    /* (non-Javadoc)     * @see java.awt.Graphics#drawImage(java.awt.Image, int, int, int, int,      * java.awt.image.ImageObserver)     */    public boolean drawImage(Image image, int x, int y, int width, int height,            ImageObserver observer) {        // TODO Auto-generated method stub        return false;    }    /* (non-Javadoc)     * @see java.awt.Graphics#drawImage(java.awt.Image, int, int,      * java.awt.Color, java.awt.image.ImageObserver)     */    public boolean drawImage(Image image, int x, int y, Color bgcolor,            ImageObserver observer) {        // TODO Auto-generated method stub        return false;    }    /* (non-Javadoc)     * @see java.awt.Graphics#drawImage(java.awt.Image, int, int, int, int,      * java.awt.Color, java.awt.image.ImageObserver)     */    public boolean drawImage(Image image, int x, int y, int width, int height,            Color bgcolor, ImageObserver observer) {        // TODO Auto-generated method stub        return false;    }    /* (non-Javadoc)     * @see java.awt.Graphics#drawImage(java.awt.Image, int, int, int, int,      * int, int, int, int, java.awt.image.ImageObserver)     */    public boolean drawImage(Image image, int dx1, int dy1, int dx2, int dy2,            int sx1, int sy1, int sx2, int sy2, ImageObserver observer) {        // TODO Auto-generated method stub        return false;    }    /* (non-Javadoc)     * @see java.awt.Graphics#drawImage(java.awt.Image, int, int, int, int,      * int, int, int, int, java.awt.Color, java.awt.image.ImageObserver)     */    public boolean drawImage(Image image, int dx1, int dy1, int dx2, int dy2,            int sx1, int sy1, int sx2, int sy2, Color bgcolor,            ImageObserver observer) {        // TODO Auto-generated method stub        return false;    }    /* (non-Javadoc)     * @see java.awt.Graphics#dispose()     */    public void dispose() {        // we dispose resources we own but user must dispose gc        disposeResourcePool();    }    /**     * Add given swt resource to the resource pool. All resources added     * to the resource pool will be disposed when {@link #dispose()} is called.     *       * @param resource the resource to add to the pool.     * @return the swt <code>Resource</code> just added.     */    private Resource addToResourcePool(Resource resource) {        this.resourcePool.add(resource);        return resource;    }    /**     * Dispose the resource pool.     */    private void disposeResourcePool() {        for (Iterator it = this.resourcePool.iterator(); it.hasNext();) {            Resource resource = (Resource) it.next();            resource.dispose();        }        this.resourcePool.clear();        this.colorsPool.clear();        this.resourcePool.clear();    }    /**     * Internal method to convert a AWT font object into      * a SWT font resource. If a corresponding SWT font     * instance is already in the pool, it will be used      * instead of creating a new one. This is used in      * {@link #setFont()} for instance.      *      * @param font The AWT font to convert.     * @return The SWT font instance.     */    private org.eclipse.swt.graphics.Font getSwtFontFromPool(Font font) {        org.eclipse.swt.graphics.Font swtFont = (org.eclipse.swt.graphics.Font)        this.fontsPool.get(font);        if (swtFont == null) {            swtFont = new org.eclipse.swt.graphics.Font(this.gc.getDevice(),                     SWTUtils.toSwtFontData(this.gc.getDevice(), font, true));            addToResourcePool(swtFont);            this.fontsPool.put(font, swtFont);        }        return swtFont;    }    /**     * Internal method to convert a AWT color object into      * a SWT color resource. If a corresponding SWT color     * instance is already in the pool, it will be used      * instead of creating a new one. This is used in      * {@link #setColor()} for instance.      *      * @param awtColor The AWT color to convert.     * @return A SWT color instance.     */    private org.eclipse.swt.graphics.Color getSwtColorFromPool(Color awtColor) {        org.eclipse.swt.graphics.Color swtColor =                 (org.eclipse.swt.graphics.Color)                // we can't use the following valueOf() method, because it                 // won't compile with JDK1.4                // this.colorsPool.get(Integer.valueOf(awtColor.getRGB()));                this.colorsPool.get(new Integer(awtColor.getRGB()));        if (swtColor == null) {            swtColor = SWTUtils.toSwtColor(this.gc.getDevice(), awtColor);            addToResourcePool(swtColor);            // see comment above            //this.colorsPool.put(Integer.valueOf(awtColor.getRGB()), swtColor);            this.colorsPool.put(new Integer(awtColor.getRGB()), swtColor);        }        return swtColor;    }    /**     * Perform a switch between foreground and background      * color of gc. This is needed for consistency with      * the awt behaviour, and is required notably for the      * filling methods.     */    private void switchColors() {        org.eclipse.swt.graphics.Color bg = this.gc.getBackground();        org.eclipse.swt.graphics.Color fg = this.gc.getForeground();        this.gc.setBackground(fg);        this.gc.setForeground(bg);    }    /**     * Converts an AWT <code>Shape</code> into a SWT <code>Path</code>.     *      * @param shape  the shape (<code>null</code> not permitted).     *      * @return The path.     */    private Path toSwtPath(Shape shape) {        int type;        float[] coords = new float[6];        Path path = new Path(this.gc.getDevice());        PathIterator pit = shape.getPathIterator(null);        while (!pit.isDone()) {            type = pit.currentSegment(coords);            switch (type) {                case (PathIterator.SEG_MOVETO):                    path.moveTo(coords[0], coords[1]);                    break;                case (PathIterator.SEG_LINETO):                    path.lineTo(coords[0], coords[1]);                    break;                case (PathIterator.SEG_QUADTO):                    path.quadTo(coords[0], coords[1], coords[2], coords[3]);                    break;                case (PathIterator.SEG_CUBICTO):                    path.cubicTo(coords[0], coords[1], coords[2],                             coords[3], coords[4], coords[5]);                    break;                case (PathIterator.SEG_CLOSE):                    path.close();                    break;                default:                    break;            }            pit.next();        }        return path;    }    /**     * Converts an AWT transform into the equivalent SWT transform.     *      * @param awtTransform  the AWT transform.     *      * @return The SWT transform.     */    private Transform toSwtTransform(AffineTransform awtTransform) {        Transform t = new Transform(this.gc.getDevice());        double[] matrix = new double[6];        awtTransform.getMatrix(matrix);        t.setElements((float) matrix[0], (float) matrix[1],                (float) matrix[2], (float) matrix[3],                (float) matrix[4], (float) matrix[5]);         return t;    }    /**     * Converts an SWT transform into the equivalent AWT transform.     *      * @param swtTransform  the SWT transform.     *      * @return The AWT transform.     */    private AffineTransform toAwtTransform(Transform swtTransform) {        float[] elements = new float[6];        swtTransform.getElements(elements);        AffineTransform awtTransform = new AffineTransform(elements);        return awtTransform;    }    static ImageData convertToSWT(BufferedImage bufferedImage) {        if (bufferedImage.getColorModel() instanceof DirectColorModel) {            DirectColorModel colorModel                     = (DirectColorModel) bufferedImage.getColorModel();            PaletteData palette = new PaletteData(colorModel.getRedMask(),                    colorModel.getGreenMask(), colorModel.getBlueMask());            ImageData data = new ImageData(bufferedImage.getWidth(),                     bufferedImage.getHeight(), colorModel.getPixelSize(),                    palette);            WritableRaster raster = bufferedImage.getRaster();            int[] pixelArray = new int[3];            for (int y = 0; y < data.height; y++) {                for (int x = 0; x < data.width; x++) {                    raster.getPixel(x, y, pixelArray);                    int pixel = palette.getPixel(new RGB(pixelArray[0],                             pixelArray[1], pixelArray[2]));                    data.setPixel(x, y, pixel);                }            }            return data;        }         else if (bufferedImage.getColorModel() instanceof IndexColorModel) {            IndexColorModel colorModel = (IndexColorModel)                     bufferedImage.getColorModel();            int size = colorModel.getMapSize();            byte[] reds = new byte[size];            byte[] greens = new byte[size];            byte[] blues = new byte[size];            colorModel.getReds(reds);            colorModel.getGreens(greens);            colorModel.getBlues(blues);            RGB[] rgbs = new RGB[size];            for (int i = 0; i < rgbs.length; i++) {                rgbs[i] = new RGB(reds[i] & 0xFF, greens[i] & 0xFF,                         blues[i] & 0xFF);            }            PaletteData palette = new PaletteData(rgbs);            ImageData data = new ImageData(bufferedImage.getWidth(),                    bufferedImage.getHeight(), colorModel.getPixelSize(),                    palette);            data.transparentPixel = colorModel.getTransparentPixel();            WritableRaster raster = bufferedImage.getRaster();            int[] pixelArray = new int[1];            for (int y = 0; y < data.height; y++) {                for (int x = 0; x < data.width; x++) {                    raster.getPixel(x, y, pixelArray);                    data.setPixel(x, y, pixelArray[0]);                }            }            return data;        }        return null;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -