亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? cylinderrenderer.java

?? jfreechart的例子教程附有源代碼
?? JAVA
字號(hào):
/* ---------------------
 * CylinderRenderer.java
 * ---------------------
 * (C) Copyright 2005, by Object Refinery Limited.
 *
 */

package demo;

import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Shape;
import java.awt.geom.Arc2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.Rectangle2D;

import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.ValueAxis;
import org.jfree.chart.entity.CategoryItemEntity;
import org.jfree.chart.entity.EntityCollection;
import org.jfree.chart.labels.CategoryItemLabelGenerator;
import org.jfree.chart.labels.CategoryToolTipGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.category.CategoryItemRendererState;
import org.jfree.data.category.CategoryDataset;
import org.jfree.ui.RectangleEdge;

/**
 * A custom renderer that draws cylinders to represent data from a 
 * CategoryDataset in a CategoryPlot.
 */
public class CylinderRenderer extends BarRenderer3D {

    /**
     * Default constructor.
     */
    public CylinderRenderer() {
        super();   
    }
    
    /**
     * Creates a new renderer.
     * 
     * @param xOffset  the x-offset for the 3D effect.
     * @param yOffset  the y-offset for the 3D effect.
     */
    public CylinderRenderer(double xOffset, double yOffset) {
        super(xOffset, yOffset);   
    }
    
    /**
     * Draws a cylinder to represent one data item.
     *
     * @param g2  the graphics device.
     * @param state  the renderer state.
     * @param dataArea  the area for plotting the data.
     * @param plot  the plot.
     * @param domainAxis  the domain axis.
     * @param rangeAxis  the range axis.
     * @param dataset  the dataset.
     * @param row  the row index (zero-based).
     * @param column  the column index (zero-based).
     * @param pass  the pass index.
     */
    public void drawItem(Graphics2D g2,
                         CategoryItemRendererState state,
                         Rectangle2D dataArea,
                         CategoryPlot plot,
                         CategoryAxis domainAxis,
                         ValueAxis rangeAxis,
                         CategoryDataset dataset,
                         int row,
                         int column,
                         int pass) {
    
        // check the value we are plotting...
        Number dataValue = dataset.getValue(row, column);
        if (dataValue == null) {
            return;
        }
        
        double value = dataValue.doubleValue();
        
        Rectangle2D adjusted = new Rectangle2D.Double(
            dataArea.getX(),
            dataArea.getY() + getYOffset(),
            dataArea.getWidth() - getXOffset(),
            dataArea.getHeight() - getYOffset()
        );

        PlotOrientation orientation = plot.getOrientation();
        
        double barW0 = calculateBarW0(plot, orientation, adjusted, domainAxis, 
                state, row, column);
        double[] barL0L1 = calculateBarL0L1(value);
        if (barL0L1 == null) {
            return;  // the bar is not visible
        }

        RectangleEdge edge = plot.getRangeAxisEdge();
        float transL0 = (float) rangeAxis.valueToJava2D(barL0L1[0], adjusted, 
                edge);
        float transL1 = (float) rangeAxis.valueToJava2D(barL0L1[1], adjusted, 
                edge);
        float barL0 = Math.min(transL0, transL1);
        float barLength = Math.abs(transL1 - transL0);
        
        // draw the bar...
        GeneralPath bar = new GeneralPath();
        if (orientation == PlotOrientation.HORIZONTAL) {
            bar.moveTo(barL0, (float) barW0);
            bar.lineTo(barL0, (float) (barW0 + state.getBarWidth()));
            bar.lineTo(barL0 + barLength, (float) (barW0 + state.getBarWidth()));
            bar.lineTo(barL0 + barLength, (float) barW0);
            bar.closePath();
        }
        else {
            bar.moveTo((float) barW0, (float) (barL0 - getYOffset() / 2));
            bar.lineTo((float) barW0, (float) (barL0 + barLength - getYOffset()
                    / 2));
            Arc2D arc = new Arc2D.Double(barW0, (barL0 + barLength 
                    - getYOffset()), state.getBarWidth(), getYOffset(), 180, 
                    180, Arc2D.OPEN);
            bar.append(arc, true);
            bar.lineTo((float) (barW0 + state.getBarWidth()), (float) (barL0 
                    - getYOffset() / 2));
            arc = new Arc2D.Double(barW0, (barL0 - getYOffset()), 
                    state.getBarWidth(), getYOffset(), 0, -180, Arc2D.OPEN);
            bar.append(arc, true);
            bar.closePath();
        }
        Paint itemPaint = getItemPaint(row, column);
        if (getGradientPaintTransformer() != null 
                && itemPaint instanceof GradientPaint) {
            GradientPaint gp = (GradientPaint) itemPaint;
            itemPaint = getGradientPaintTransformer().transform(gp, bar);
        }
        g2.setPaint(itemPaint);
        g2.fill(bar);

        Shape bar3dTop = new Ellipse2D.Double(barW0, barL0 - getYOffset(), 
                state.getBarWidth(), getYOffset());
        if (itemPaint instanceof GradientPaint) {
            g2.setPaint(((GradientPaint) itemPaint).getColor2());   
        }
        g2.fill(bar3dTop);

        if (isDrawBarOutline() 
                && state.getBarWidth() > BAR_OUTLINE_WIDTH_THRESHOLD) {
            g2.setStroke(getItemOutlineStroke(row, column));
            g2.setPaint(getItemOutlinePaint(row, column));
            g2.draw(bar);
            if (bar3dTop != null) {
                g2.draw(bar3dTop);
            }
        }

        CategoryItemLabelGenerator generator 
            = getItemLabelGenerator(row, column);
        if (generator != null && isItemLabelVisible(row, column)) {
            drawItemLabel(
                g2, dataset, row, column, plot, generator, bar.getBounds2D(), 
                (value < 0.0)
            );
        }        

        // collect entity and tool tip information...
        if (state.getInfo() != null) {
            EntityCollection entities = state.getEntityCollection();
            if (entities != null) {
                

                String tip = null;
                CategoryToolTipGenerator tipster 
                    = getToolTipGenerator(row, column);
                if (tipster != null) {
                    tip = tipster.generateToolTip(dataset, row, column);
                }
                String url = null;
                if (getItemURLGenerator(row, column) != null) {
                    url = getItemURLGenerator(row, column).generateURL(
                        dataset, row, column
                    );
                }
                CategoryItemEntity entity = new CategoryItemEntity(
                    bar.getBounds2D(), tip, url, dataset, row, 
                    dataset.getColumnKey(column), column
                );
                entities.add(entity);
            }
        }

    }

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区三区在线播放| 欧美性猛交xxxx乱大交退制版 | 国产一区不卡在线| 国产精品久久久久aaaa| 欧美精品日韩综合在线| 国产成人在线观看免费网站| 无吗不卡中文字幕| 国产精品国产三级国产专播品爱网| 欧美日韩免费高清一区色橹橹| 国产a视频精品免费观看| 亚洲国产一区二区三区 | 精品成a人在线观看| 91成人免费在线| 国产91丝袜在线18| 另类小说视频一区二区| 亚洲蜜臀av乱码久久精品蜜桃| 久久网站热最新地址| 欧美日韩视频在线一区二区| 成人av网址在线| 国内精品久久久久影院色| 亚洲成人免费视频| 国产精品久久久一本精品 | 国产视频在线观看一区二区三区| 欧美日韩美少妇| 色先锋久久av资源部| 国产91丝袜在线18| 国产美女精品在线| 久久精品99国产精品日本| 亚洲第一综合色| 一区二区三区精品| 亚洲欧美日韩国产中文在线| 国产精品乱码一区二三区小蝌蚪| 亚洲精品一区在线观看| 欧美sm极限捆绑bd| 欧美精品日韩一区| 欧美片网站yy| 宅男在线国产精品| 欧美色倩网站大全免费| 精品视频在线免费| 欧美午夜一区二区| 91国产精品成人| www.欧美色图| 色综合久久久久综合体| 色偷偷成人一区二区三区91| 成人app网站| 91色乱码一区二区三区| 91看片淫黄大片一级| 91视频一区二区| 91久久精品一区二区| 欧美亚男人的天堂| 欧美日韩激情一区| 日韩午夜激情免费电影| 欧美tickle裸体挠脚心vk| 久久婷婷色综合| 国产精品网站导航| 亚洲色图欧美激情| 亚洲高清视频在线| 久久精品国产亚洲一区二区三区| 7777精品伊人久久久大香线蕉最新版| 在线播放视频一区| 日韩欧美资源站| 欧美国产激情一区二区三区蜜月| 中文字幕人成不卡一区| 亚洲大型综合色站| 精品系列免费在线观看| 丁香天五香天堂综合| 91捆绑美女网站| 91精品啪在线观看国产60岁| 欧美一级片在线看| 欧美极品美女视频| 一区二区三区资源| 日本vs亚洲vs韩国一区三区二区 | 亚洲国产aⅴ成人精品无吗| 日韩成人免费电影| 国产高清久久久| 在线观看一区日韩| 日韩美女一区二区三区| 国产精品精品国产色婷婷| 一区二区三区在线免费| 国产一区二三区好的| 处破女av一区二区| 欧美日韩高清在线| 国产视频一区二区三区在线观看 | 午夜国产精品一区| 国产老女人精品毛片久久| 色综合天天综合狠狠| 欧美一二三四在线| 国产精品美女久久久久aⅴ国产馆| 一区二区三区视频在线看| 久久精品久久精品| 色哦色哦哦色天天综合| 精品国一区二区三区| 一区二区在线观看视频| 韩国三级电影一区二区| 欧美性色欧美a在线播放| 久久久噜噜噜久久中文字幕色伊伊| 1024成人网| 国产真实精品久久二三区| 在线一区二区视频| 欧美国产日韩a欧美在线观看| 日本欧美一区二区在线观看| 99精品视频免费在线观看| 日韩欧美精品在线| 亚洲综合成人在线视频| 国产98色在线|日韩| 欧美一区二区人人喊爽| 亚洲精品久久久久久国产精华液| 国产自产v一区二区三区c| 欧美精品色一区二区三区| 中文字幕一区在线观看| 国产一区二区三区综合| 欧美精品久久一区| 亚洲免费观看高清完整版在线观看| 国产一区二区三区四区五区入口| 7777精品伊人久久久大香线蕉超级流畅 | 国产成人精品免费在线| 欧美日韩免费高清一区色橹橹 | 日韩电影在线观看一区| 色婷婷一区二区| 国产精品成人免费精品自在线观看| 韩国精品主播一区二区在线观看| 欧美日本在线播放| 亚洲成人综合视频| 在线视频综合导航| 亚洲欧美另类小说| 成人不卡免费av| 国产午夜精品在线观看| 国产一区二区三区免费看 | 日韩美女主播在线视频一区二区三区| 亚洲尤物在线视频观看| 在线精品国精品国产尤物884a| 亚洲欧洲av在线| av不卡免费电影| 热久久久久久久| 欧美嫩在线观看| 午夜精品久久久久久不卡8050| 欧美自拍丝袜亚洲| 亚洲制服丝袜av| 欧美日韩精品一二三区| 日日夜夜免费精品| 日韩一区二区免费在线电影| 日韩高清不卡在线| 日韩欧美色综合| 国产一区二区三区最好精华液| 国产日韩欧美一区二区三区乱码| 国产成人综合网站| 欧美国产日产图区| 93久久精品日日躁夜夜躁欧美| 亚洲免费av观看| 欧美日本韩国一区| 久久精品国产亚洲一区二区三区| 精品三级av在线| 国产成人午夜片在线观看高清观看| 国产欧美一区二区三区网站| 成人h版在线观看| 亚洲精品你懂的| 欧美精品乱码久久久久久按摩| 日本强好片久久久久久aaa| 精品国产乱码久久久久久图片| 国产宾馆实践打屁股91| 亚洲日本青草视频在线怡红院| 欧美综合一区二区| 麻豆91在线播放免费| 国产丝袜美腿一区二区三区| 色婷婷综合久久| 青青草97国产精品免费观看无弹窗版 | 免费观看在线色综合| 精品sm捆绑视频| 99久久99久久精品国产片果冻 | 天天色综合天天| 26uuu久久综合| 99re在线精品| 国产日韩欧美综合一区| 91黄色免费看| 激情五月激情综合网| 亚洲图片激情小说| 在线电影一区二区三区| 国产.精品.日韩.另类.中文.在线.播放| 亚洲欧洲韩国日本视频 | 亚洲欧美国产高清| 欧美一级高清片| 不卡一区在线观看| 日本欧美加勒比视频| 国产精品久久久久久久久免费桃花 | 91豆麻精品91久久久久久| 久久国产精品免费| 亚洲精品高清在线| 2024国产精品视频| 欧美性受极品xxxx喷水| 福利一区在线观看| 日韩电影一二三区| 亚洲精品久久嫩草网站秘色| 久久品道一品道久久精品| 欧美在线啊v一区| 国产91综合一区在线观看| 三级亚洲高清视频| 亚洲美女少妇撒尿| 欧美激情综合五月色丁香| 日韩情涩欧美日韩视频| 欧美日韩一区久久|