📄 barrenderer3d.html
字号:
<FONT color="green">562</FONT> g2.setPaint(marker.getPaint());<a name="line.562"></a><FONT color="green">563</FONT> g2.fill(path);<a name="line.563"></a><FONT color="green">564</FONT> g2.setPaint(marker.getOutlinePaint());<a name="line.564"></a><FONT color="green">565</FONT> g2.draw(path);<a name="line.565"></a><FONT color="green">566</FONT> <a name="line.566"></a><FONT color="green">567</FONT> String label = marker.getLabel();<a name="line.567"></a><FONT color="green">568</FONT> RectangleAnchor anchor = marker.getLabelAnchor();<a name="line.568"></a><FONT color="green">569</FONT> if (label != null) {<a name="line.569"></a><FONT color="green">570</FONT> Font labelFont = marker.getLabelFont();<a name="line.570"></a><FONT color="green">571</FONT> g2.setFont(labelFont);<a name="line.571"></a><FONT color="green">572</FONT> g2.setPaint(marker.getLabelPaint());<a name="line.572"></a><FONT color="green">573</FONT> Point2D coordinates = calculateRangeMarkerTextAnchorPoint(<a name="line.573"></a><FONT color="green">574</FONT> g2, orientation, dataArea, path.getBounds2D(), <a name="line.574"></a><FONT color="green">575</FONT> marker.getLabelOffset(), LengthAdjustmentType.EXPAND, anchor<a name="line.575"></a><FONT color="green">576</FONT> );<a name="line.576"></a><FONT color="green">577</FONT> TextUtilities.drawAlignedString(<a name="line.577"></a><FONT color="green">578</FONT> label, g2, <a name="line.578"></a><FONT color="green">579</FONT> (float) coordinates.getX(), (float) coordinates.getY(), <a name="line.579"></a><FONT color="green">580</FONT> marker.getLabelTextAnchor()<a name="line.580"></a><FONT color="green">581</FONT> );<a name="line.581"></a><FONT color="green">582</FONT> }<a name="line.582"></a><FONT color="green">583</FONT> <a name="line.583"></a><FONT color="green">584</FONT> }<a name="line.584"></a><FONT color="green">585</FONT> else {<a name="line.585"></a><FONT color="green">586</FONT> super.drawRangeMarker(g2, plot, axis, marker, dataArea);<a name="line.586"></a><FONT color="green">587</FONT> // TODO: draw the interval marker with a 3D effect<a name="line.587"></a><FONT color="green">588</FONT> }<a name="line.588"></a><FONT color="green">589</FONT> }<a name="line.589"></a><FONT color="green">590</FONT> <a name="line.590"></a><FONT color="green">591</FONT> /**<a name="line.591"></a><FONT color="green">592</FONT> * Draws a 3D bar to represent one data item.<a name="line.592"></a><FONT color="green">593</FONT> *<a name="line.593"></a><FONT color="green">594</FONT> * @param g2 the graphics device.<a name="line.594"></a><FONT color="green">595</FONT> * @param state the renderer state.<a name="line.595"></a><FONT color="green">596</FONT> * @param dataArea the area for plotting the data.<a name="line.596"></a><FONT color="green">597</FONT> * @param plot the plot.<a name="line.597"></a><FONT color="green">598</FONT> * @param domainAxis the domain axis.<a name="line.598"></a><FONT color="green">599</FONT> * @param rangeAxis the range axis.<a name="line.599"></a><FONT color="green">600</FONT> * @param dataset the dataset.<a name="line.600"></a><FONT color="green">601</FONT> * @param row the row index (zero-based).<a name="line.601"></a><FONT color="green">602</FONT> * @param column the column index (zero-based).<a name="line.602"></a><FONT color="green">603</FONT> * @param pass the pass index.<a name="line.603"></a><FONT color="green">604</FONT> */<a name="line.604"></a><FONT color="green">605</FONT> public void drawItem(Graphics2D g2,<a name="line.605"></a><FONT color="green">606</FONT> CategoryItemRendererState state,<a name="line.606"></a><FONT color="green">607</FONT> Rectangle2D dataArea,<a name="line.607"></a><FONT color="green">608</FONT> CategoryPlot plot,<a name="line.608"></a><FONT color="green">609</FONT> CategoryAxis domainAxis,<a name="line.609"></a><FONT color="green">610</FONT> ValueAxis rangeAxis,<a name="line.610"></a><FONT color="green">611</FONT> CategoryDataset dataset,<a name="line.611"></a><FONT color="green">612</FONT> int row,<a name="line.612"></a><FONT color="green">613</FONT> int column,<a name="line.613"></a><FONT color="green">614</FONT> int pass) {<a name="line.614"></a><FONT color="green">615</FONT> <a name="line.615"></a><FONT color="green">616</FONT> // check the value we are plotting...<a name="line.616"></a><FONT color="green">617</FONT> Number dataValue = dataset.getValue(row, column);<a name="line.617"></a><FONT color="green">618</FONT> if (dataValue == null) {<a name="line.618"></a><FONT color="green">619</FONT> return;<a name="line.619"></a><FONT color="green">620</FONT> }<a name="line.620"></a><FONT color="green">621</FONT> <a name="line.621"></a><FONT color="green">622</FONT> double value = dataValue.doubleValue();<a name="line.622"></a><FONT color="green">623</FONT> <a name="line.623"></a><FONT color="green">624</FONT> Rectangle2D adjusted = new Rectangle2D.Double(<a name="line.624"></a><FONT color="green">625</FONT> dataArea.getX(),<a name="line.625"></a><FONT color="green">626</FONT> dataArea.getY() + getYOffset(),<a name="line.626"></a><FONT color="green">627</FONT> dataArea.getWidth() - getXOffset(),<a name="line.627"></a><FONT color="green">628</FONT> dataArea.getHeight() - getYOffset()<a name="line.628"></a><FONT color="green">629</FONT> );<a name="line.629"></a><FONT color="green">630</FONT> <a name="line.630"></a><FONT color="green">631</FONT> PlotOrientation orientation = plot.getOrientation();<a name="line.631"></a><FONT color="green">632</FONT> <a name="line.632"></a><FONT color="green">633</FONT> double barW0 = calculateBarW0(<a name="line.633"></a><FONT color="green">634</FONT> plot, orientation, adjusted, domainAxis, state, row, column<a name="line.634"></a><FONT color="green">635</FONT> );<a name="line.635"></a><FONT color="green">636</FONT> double[] barL0L1 = calculateBarL0L1(value);<a name="line.636"></a><FONT color="green">637</FONT> if (barL0L1 == null) {<a name="line.637"></a><FONT color="green">638</FONT> return; // the bar is not visible<a name="line.638"></a><FONT color="green">639</FONT> }<a name="line.639"></a><FONT color="green">640</FONT> <a name="line.640"></a><FONT color="green">641</FONT> RectangleEdge edge = plot.getRangeAxisEdge();<a name="line.641"></a><FONT color="green">642</FONT> double transL0 = rangeAxis.valueToJava2D(barL0L1[0], adjusted, edge);<a name="line.642"></a><FONT color="green">643</FONT> double transL1 = rangeAxis.valueToJava2D(barL0L1[1], adjusted, edge);<a name="line.643"></a><FONT color="green">644</FONT> double barL0 = Math.min(transL0, transL1);<a name="line.644"></a><FONT color="green">645</FONT> double barLength = Math.abs(transL1 - transL0);<a name="line.645"></a><FONT color="green">646</FONT> <a name="line.646"></a><FONT color="green">647</FONT> // draw the bar...<a name="line.647"></a><FONT color="green">648</FONT> Rectangle2D bar = null;<a name="line.648"></a><FONT color="green">649</FONT> if (orientation == PlotOrientation.HORIZONTAL) {<a name="line.649"></a><FONT color="green">650</FONT> bar = new Rectangle2D.Double(<a name="line.650"></a><FONT color="green">651</FONT> barL0, barW0, barLength, state.getBarWidth()<a name="line.651"></a><FONT color="green">652</FONT> );<a name="line.652"></a><FONT color="green">653</FONT> }<a name="line.653"></a><FONT color="green">654</FONT> else {<a name="line.654"></a><FONT color="green">655</FONT> bar = new Rectangle2D.Double(<a name="line.655"></a><FONT color="green">656</FONT> barW0, barL0, state.getBarWidth(), barLength<a name="line.656"></a><FONT color="green">657</FONT> );<a name="line.657"></a><FONT color="green">658</FONT> }<a name="line.658"></a><FONT color="green">659</FONT> Paint itemPaint = getItemPaint(row, column);<a name="line.659"></a><FONT color="green">660</FONT> g2.setPaint(itemPaint);<a name="line.660"></a><FONT color="green">661</FONT> g2.fill(bar);<a name="line.661"></a><FONT color="green">662</FONT> <a name="line.662"></a><FONT color="green">663</FONT> double x0 = bar.getMinX();<a name="line.663"></a><FONT color="green">664</FONT> double x1 = x0 + getXOffset();<a name="line.664"></a><FONT color="green">665</FONT> double x2 = bar.getMaxX();<a name="line.665"></a><FONT color="green">666</FONT> double x3 = x2 + getXOffset();<a name="line.666"></a><FONT color="green">667</FONT> <a name="line.667"></a><FONT color="green">668</FONT> double y0 = bar.getMinY() - getYOffset();<a name="line.668"></a><FONT color="green">669</FONT> double y1 = bar.getMinY();<a name="line.669"></a><FONT color="green">670</FONT> double y2 = bar.getMaxY() - getYOffset();<a name="line.670"></a><FONT color="green">671</FONT> double y3 = bar.getMaxY();<a name="line.671"></a><FONT color="green">672</FONT> <a name="line.672"></a><FONT color="green">673</FONT> GeneralPath bar3dRight = null;<a name="line.673"></a><FONT color="green">674</FONT> GeneralPath bar3dTop = null;<a name="line.674"></a><FONT color="green">675</FONT> if (barLength > 0.0) {<a name="line.675"></a><FONT color="green">676</FONT> bar3dRight = new GeneralPath();<a name="line.676"></a><FONT color="green">677</FONT> bar3dRight.moveTo((float) x2, (float) y3);<a name="line.677"></a><FONT color="green">678</FONT> bar3dRight.lineTo((float) x2, (float) y1);<a name="line.678"></a><FONT color="green">679</FONT> bar3dRight.lineTo((float) x3, (float) y0);<a name="line.679"></a><FONT color="green">680</FONT> bar3dRight.lineTo((float) x3, (float) y2);<a name="line.680"></a><FONT color="green">681</FONT> bar3dRight.closePath();<a name="line.681"></a><FONT color="green">682</FONT> <a name="line.682"></a><FONT color="green">683</FONT> if (itemPaint instanceof Color) {<a name="line.683"></a><FONT color="green">684</FONT> g2.setPaint(((Color) itemPaint).darker());<a name="line.684"></a><FONT color="green">685</FONT> }<a name="line.685"></a><FONT color="green">686</FONT> g2.fill(bar3dRight);<a name="line.686"></a><FONT color="green">687</FONT> }<a name="line.687"></a><FONT color="green">688</FONT> <a name="line.688"></a><FONT color="green">689</FONT> bar3dTop = new GeneralPath();<a name="line.689"></a><FONT color="green">690</FONT> bar3dTop.moveTo((float) x0, (float) y1);<a name="line.690"></a><FONT color="green">691</FONT> bar3dTop.lineTo((float) x1, (float) y0);<a name="line.691"></a><FONT color="green">692</FONT> bar3dTop.lineTo((float) x3, (float) y0);<a name="line.692"></a><FONT color="green">693</FONT> bar3dTop.lineTo((float) x2, (float) y1);<a name="line.693"></a><FONT color="green">694</FONT> bar3dTop.closePath();<a name="line.694"></a><FONT color="green">695</FONT> g2.fill(bar3dTop);<a name="line.695"></a><FONT color="green">696</FONT> <a name="line.696"></a><FONT color="green">697</FONT> if (isDrawBarOutline() <a name="line.697"></a><FONT color="green">698</FONT> && state.getBarWidth() > BAR_OUTLINE_WIDTH_THRESHOLD) {<a name="line.698"></a><FONT color="green">699</FONT> g2.setStroke(getItemOutlineStroke(row, column));<a name="line.699"></a><FO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -