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

📄 chartcomposite.java

📁 java图形利器
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
     * the value of {@link #getZoomInFactor()}.     *     * @param x  the x-coordinate (in screen coordinates).     * @param y  the y coordinate (in screen coordinates).     */    public void zoomInRange(double x, double y) {        Plot p = this.chart.getPlot();        if (p instanceof Zoomable) {            Zoomable z = (Zoomable) p;            z.zoomRangeAxes(this.zoomInFactor, this.info.getPlotInfo(),                     translateScreenToJava2D(new Point((int) x, (int) y)));        }    }    /**     * Zooms out on an anchor point (specified in screen coordinate space).     *     * @param x  the x value (in screen coordinates).     * @param y  the y value (in screen coordinates).     */    public void zoomOutBoth(double x, double y) {        zoomOutDomain(x, y);        zoomOutRange(x, y);    }    /**     * Increases the length of the domain axis, centered about the given     * coordinate on the screen.  The length of the domain axis is increased     * by the value of {@link #getZoomOutFactor()}.     *     * @param x  the x coordinate (in screen coordinates).     * @param y  the y-coordinate (in screen coordinates).     */    public void zoomOutDomain(double x, double y) {        Plot p = this.chart.getPlot();        if (p instanceof Zoomable) {            Zoomable z = (Zoomable) p;            z.zoomDomainAxes(this.zoomOutFactor, this.info.getPlotInfo(),                     translateScreenToJava2D(new Point((int) x, (int) y)));        }    }    /**     * Increases the length the range axis, centered about the given     * coordinate on the screen.  The length of the range axis is increased     * by the value of {@link #getZoomOutFactor()}.     *     * @param x  the x coordinate (in screen coordinates).     * @param y  the y-coordinate (in screen coordinates).     */    public void zoomOutRange(double x, double y) {        Plot p = this.chart.getPlot();        if (p instanceof Zoomable) {            Zoomable z = (Zoomable) p;            z.zoomRangeAxes(this.zoomOutFactor, this.info.getPlotInfo(),                     translateScreenToJava2D(new Point((int) x, (int) y)));        }    }    /**     * Zooms in on a selected region.     *     * @param selection  the selected region.     */    public void zoom(Rectangle selection) {        // get the origin of the zoom selection in the Java2D space used for        // drawing the chart (that is, before any scaling to fit the panel)        Point2D selectOrigin = translateScreenToJava2D(                new Point(selection.x, selection.y));        PlotRenderingInfo plotInfo = this.info.getPlotInfo();        Rectangle scaledDataArea = getScreenDataArea(                (int) (selection.x + selection.width)/2,                 (int) (selection.y + selection.height)/2);        if ((selection.height > 0) && (selection.width > 0)) {            double hLower = (selection.x - scaledDataArea.x)                 / (double) scaledDataArea.width;            double hUpper = (selection.x + selection.width - scaledDataArea.x)                 / (double) scaledDataArea.width;            double vLower = (scaledDataArea.y + scaledDataArea.height - selection.y - selection.height)                 / (double) scaledDataArea.height;            double vUpper = (scaledDataArea.y + scaledDataArea.height - selection.y)                 / (double) scaledDataArea.height;            Plot p = this.chart.getPlot();            if (p instanceof Zoomable) {                Zoomable z = (Zoomable) p;                if (z.getOrientation() == PlotOrientation.HORIZONTAL) {                    z.zoomDomainAxes(vLower, vUpper, plotInfo, selectOrigin);                    z.zoomRangeAxes(hLower, hUpper, plotInfo, selectOrigin);                }                else {                    z.zoomDomainAxes(hLower, hUpper, plotInfo, selectOrigin);                    z.zoomRangeAxes(vLower, vUpper, plotInfo, selectOrigin);                }            }        }    }    /**     * Receives notification of changes to the chart, and redraws the chart.     *     * @param event  details of the chart change event.     */    public void chartChanged(ChartChangeEvent event) {        this.refreshBuffer = true;        Plot plot = chart.getPlot();        if (plot instanceof Zoomable) {            Zoomable z = (Zoomable) plot;            this.orientation = z.getOrientation();        }        canvas.redraw();    }    /**     * Forces a redraw of the canvas by invoking a new PaintEvent.     */    public void forceRedraw() {        Event ev = new Event();        ev.gc = new GC(canvas);        ev.x = 0;        ev.y = 0;        ev.width = canvas.getBounds().width;        ev.height = canvas.getBounds().height;        ev.count = 0;        canvas.notifyListeners(SWT.Paint, ev);        ev.gc.dispose();    }        /**     * Receives notification of a chart progress event.     *     * @param event  the event.     */    public void chartProgress(ChartProgressEvent event) {        // does nothing - override if necessary    }    /**     * Restores the auto-range calculation on both axes.     */    public void restoreAutoBounds() {        restoreAutoDomainBounds();        restoreAutoRangeBounds();    }    /**     * Restores the auto-range calculation on the domain axis.     */    public void restoreAutoDomainBounds() {        Plot p = this.chart.getPlot();        if (p instanceof Zoomable)         {            Zoomable z = (Zoomable) p;            z.zoomDomainAxes(0.0, this.info.getPlotInfo(), SWTUtils.toAwtPoint(this.zoomPoint));        }    }    /**     * Restores the auto-range calculation on the range axis.     */    public void restoreAutoRangeBounds() {        Plot p = this.chart.getPlot();        if (p instanceof ValueAxisPlot) {            Zoomable z = (Zoomable) p;            z.zoomRangeAxes(0.0, this.info.getPlotInfo(), SWTUtils.toAwtPoint(this.zoomPoint));         }    }    /**     * Applies any scaling that is in effect for the chart drawing to the     * given rectangle.     *       * @param rect  the rectangle.     *      * @return A new scaled rectangle.     */    public Rectangle scale(Rectangle2D rect) {        Rectangle insets = this.getClientArea();        int x = (int) Math.round(rect.getX() * getScaleX()) + insets.x;        int y = (int) Math.round(rect.getY() * this.getScaleY()) + insets.y;        int w = (int) Math.round(rect.getWidth() * this.getScaleX());        int h = (int) Math.round(rect.getHeight() * this.getScaleY());        return new Rectangle(x, y, w, h);    }    /**     * Returns the data area for the chart (the area inside the axes) with the     * current scaling applied (that is, the area as it appears on screen).     *     * @return The scaled data area.     */    public Rectangle getScreenDataArea() {        Rectangle2D dataArea = this.info.getPlotInfo().getDataArea();        Rectangle clientArea = this.getClientArea();        int x = (int) (dataArea.getX() * this.scaleX + clientArea.x);        int y = (int) (dataArea.getY() * this.scaleY + clientArea.y);        int w = (int) (dataArea.getWidth() * this.scaleX);        int h = (int) (dataArea.getHeight() * this.scaleY);        return new Rectangle(x, y, w, h);    }        /**     * Returns the data area (the area inside the axes) for the plot or subplot,     * with the current scaling applied.     *     * @param x  the x-coordinate (for subplot selection).     * @param y  the y-coordinate (for subplot selection).     *      * @return The scaled data area.     */    public Rectangle getScreenDataArea(int x, int y) {        PlotRenderingInfo plotInfo = this.info.getPlotInfo();        Rectangle result;        if (plotInfo.getSubplotCount() == 0)            result = getScreenDataArea();        else {            // get the origin of the zoom selection in the Java2D space used for            // drawing the chart (that is, before any scaling to fit the panel)            Point2D selectOrigin = translateScreenToJava2D(new Point(x, y));            int subplotIndex = plotInfo.getSubplotIndex(selectOrigin);            if (subplotIndex == -1) {                return null;            }            result = scale(plotInfo.getSubplotInfo(subplotIndex).getDataArea());        }        return result;    }    /**     * Translates a Java2D point on the chart to a screen location.     *     * @param java2DPoint  the Java2D point.     *     * @return The screen location.     */    public Point translateJava2DToScreen(Point2D java2DPoint) {        Rectangle insets = this.getClientArea();        int x = (int) (java2DPoint.getX() * this.scaleX + insets.x);        int y = (int) (java2DPoint.getY() * this.scaleY + insets.y);        return new Point(x, y);    }    /**     * Translates a screen location to a Java SWT point.     *     * @param screenPoint  the screen location.     *     * @return The Java2D coordinates.     */    public Point translateScreenToJavaSWT(Point screenPoint) {        Rectangle insets = this.getClientArea();        int x = (int) ((screenPoint.x - insets.x) / this.scaleX);        int y = (int) ((screenPoint.y - insets.y) / this.scaleY);        return new Point(x, y);    }    /**     * Translates a screen location to a Java2D point.     *     * @param screenPoint  the screen location.     *     * @return The Java2D coordinates.     */    public Point2D translateScreenToJava2D(Point screenPoint) {        Rectangle insets = this.getClientArea();        int x = (int) ((screenPoint.x - insets.x) / this.scaleX);        int y = (int) ((screenPoint.y - insets.y) / this.scaleY);        return new Point2D.Double(x, y);    }    /**     * Returns the flag that controls whether or not a horizontal axis trace     * line is drawn over the plot area at the current mouse location.     *      * @return A boolean.     */    public boolean getHorizontalAxisTrace() {        return this.horizontalAxisTrace;        }        /**     * A flag that controls trace lines on the horizontal axis.     *     * @param flag  <code>true</code> enables trace lines for the mouse     *      pointer on the horizontal axis.     */    public void setHorizontalAxisTrace(boolean flag) {        this.horizontalAxisTrace = flag;    }        /**     * Returns the flag that controls whether or not a vertical axis trace     * line is drawn over the plot area at the current mouse location.     *      * @return A boolean.     */    public boolean getVerticalAxisTrace() {        return this.verticalAxisTrace;        }        /**     * A flag that controls trace lines on the vertical axis.     *     * @param flag  <code>true</code> enables trace lines for the mouse     *              pointer on the vertical axis.     */    public void setVerticalAxisTrace(boolean flag) {        this.verticalAxisTrace = flag;    }    /**     * @param displayToolTips the displayToolTips to set     */    public void setDisplayToolTips( boolean displayToolTips ) {        this.displayToolTips = displayToolTips;    }    /**     * Returns a string for the tooltip.     *     * @param e  the mouse event.     *     * @return A tool tip or <code>null</code> if no tooltip is available.     */    public String getToolTipText(org.eclipse.swt.events.MouseEvent e) {        String result = null;

⌨️ 快捷键说明

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