Java Code Examples for java.awt.Graphics2D#clipRect()
The following examples show how to use
java.awt.Graphics2D#clipRect() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: Background.java From pumpernickel with MIT License | 6 votes |
/** * Paint the middle part (the un-bordered part) of this Background. * The dimensions provided here should be for the entire area. */ public void paintContents(Component c, Graphics g, int x, int y, int width, int height) { Insets insets = getBorderInsets(c); Rectangle insetRect = new Rectangle(x + insets.left, y + insets.top, width - insets.left - insets.right, height - insets.top - insets.bottom); if (insetRect.width > 0 && insetRect.height > 0) { Graphics2D g2 = (Graphics2D) g.create(x, y, width, height); g2.clipRect(insetRect.x, insetRect.y, insetRect.width, insetRect.height); paint(c, g2, 0, 0, width, height); g2.dispose(); } }
Example 2
Source File: ImageBorderCuttingWizard.java From CodenameOne with GNU General Public License v2.0 | 6 votes |
public void paint(Graphics g) { Graphics2D g2d = (Graphics2D)g; // prevent the clipping from applying to the lines Graphics2D another = (Graphics2D)g2d.create(); g2d.scale(get(zoom), get(zoom)); g2d.clipRect(get(cropLeft) + 10, get(cropTop) + 10, getWidth() / get(zoom) - get(cropLeft) - get(cropRight) - 20, getHeight() / get(zoom) - get(cropTop) - get(cropBottom) - 20); BufferedImage img = wiz.getImage(); g2d.drawImage(img, 10, 10, null); another.scale(get(zoom), get(zoom)); another.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.5f)); another.drawLine(0, get(top) + 10, getWidth() / get(zoom), get(top) + 10); another.drawLine(0, getHeight() / get(zoom) - get(bottom) - 10, getWidth() / get(zoom), getHeight() / get(zoom) - get(bottom) - 10); another.drawLine(get(left) + 10, 0, get(left) + 10, getHeight() / get(zoom)); another.drawLine(getWidth() / get(zoom) - get(right) - 10, 0, getWidth() / get(zoom) - get(right) - 10, getHeight() / get(zoom)); another.dispose(); }
Example 3
Source File: ShowcaseExampleDemo.java From pumpernickel with MIT License | 6 votes |
/** * Paint an extra shadow on top of the track. I wish there were an * easier way to do this, but I looked through the WindowsSliderUI and * didn't see a way to customize the track color. */ protected void paintDarkTrack(Graphics g0) { Graphics2D g = (Graphics2D) g0; VectorImage img = new VectorImage(); Graphics2D w = img.createGraphics(); w.setRenderingHints(g.getRenderingHints()); w.clipRect(0, 0, getWidth(), getHeight()); super.paintComponent(w); for (Operation op : img.getOperations()) { op.paint((Graphics2D) g); if (op instanceof ImageOperation) { Rectangle r = op.getBounds().getBounds(); if (r.width > getWidth() * .8) { g.setColor(new Color(0, 0, 0, 40)); ((Graphics2D) g).fill(op.getBounds()); } } } }
Example 4
Source File: IconWithArrow.java From netbeans with Apache License 2.0 | 6 votes |
@Override protected void paintIcon(Component c, Graphics2D g, int width, int height, double scaling) { final Color color; if (UIManager.getBoolean("nb.dark.theme")) { // Foreground brightness level taken from the combobox dropdown on Darcula. color = disabled ? new Color(90, 90, 90, 255) : new Color(187, 187, 187, 255); } else { color = disabled ? new Color(201, 201, 201, 255) : new Color(86, 86, 86, 255); } g.setColor(color); final double overshoot = 2.0 / scaling; final double arrowWidth = width + overshoot * scaling; final double arrowHeight = height - 0.2 * scaling; final double arrowMidX = arrowWidth / 2.0 - (overshoot / 2.0) * scaling; g.clipRect(0, 0, width, height); Path2D.Double arrowPath = new Path2D.Double(); arrowPath.moveTo(arrowMidX - arrowWidth / 2.0, 0); arrowPath.lineTo(arrowMidX, arrowHeight); arrowPath.lineTo(arrowMidX + arrowWidth / 2.0, 0); arrowPath.closePath(); g.fill(arrowPath); }
Example 5
Source File: TimeChart.java From scelight with Apache License 2.0 | 6 votes |
@Override public void paint( final Graphics2D g, final Rect bounds, final Rect visibleRect ) { super.paint( g, bounds, visibleRect ); drawingRect = bounds.applyInsets( INSETS ); if ( drawingRect.isEmpty() ) { g.setColor( ChartsCanvas.COLOR_MESSAGE ); g.drawString( "Not enough space to draw chart!", visibleRect.x1 + 5, visibleRect.y1 + 12 ); return; } // Things that may be inside or outside of the drawing rectangle paintAxesLabels(); // Things that must be inside of the drawing rectangle final Rectangle oldClipBounds = g.getClipBounds(); g.clipRect( drawingRect.x1, drawingRect.y1, drawingRect.width, drawingRect.height ); paintAxes(); paintData(); g.setClip( oldClipBounds ); // Things that may be inside or outside of the drawing rectangle paintTitles(); }
Example 6
Source File: UIScrollBox.java From open-ig with GNU Lesser General Public License v3.0 | 6 votes |
@Override public void draw(Graphics2D g2) { int hgap = (height - upButton.height - downButton.height) / 3; upButton.x = width - upButton.width /* - gaps */; downButton.x = width - downButton.width /* - gaps */; upButton.y = hgap; downButton.y = hgap * 2 + upButton.height; Shape save0 = g2.getClip(); g2.clipRect(0, 0, width, height); super.draw(g2); if (borderColor != 0) { g2.setColor(new Color(borderColor, true)); g2.drawRect(0, 0, width - 1, height - 1); } g2.setClip(save0); }
Example 7
Source File: VectorImageTest.java From pumpernickel with MIT License | 5 votes |
/** * This tests clipping different Graphics2Ds, drawing arcs, a SrcOut * composite to clear pixels. */ public void testContext1() throws Exception { RenderTest t = new RenderTest() { @Override public void paint(Graphics2D g) { g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setStroke(new BasicStroke(15)); g.clipRect(20, 20, 160, 160); g.setColor(Color.cyan); g.fillRect(0, 0, 200, 200); Graphics2D g2 = (Graphics2D) g.create(40, 40, 100, 100); g2.setColor(Color.pink); g2.drawArc(20, 20, 120, 120, 0, 190); Graphics2D g3 = (Graphics2D) g.create(60, 0, 100, 100); g3.setComposite(AlphaComposite.SrcOut); g3.setColor(Color.magenta); g3.drawArc(10, 10, 120, 120, 180, 340); } }; t.test(); }
Example 8
Source File: RotatedPanel.java From pumpernickel with MIT License | 5 votes |
@Override protected void paintChildren(Graphics g0) { Graphics2D g = (Graphics2D) g0.create(); g.setClip(null); g.transform(getRotation().createTransform(getWidth(), getHeight())); g.clipRect(0, 0, getHeight(), getWidth()); super.paintChildren(g); g.dispose(); }
Example 9
Source File: LineNumberBorder.java From pumpernickel with MIT License | 5 votes |
@Override public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { Graphics2D g2 = (Graphics2D) g.create(); Point viewPosition = scrollPane.getViewport().getViewPosition(); g2.clipRect(x, y, width, height); g2.translate(-viewPosition.x, -viewPosition.y); renderer.paintComponent(g2); g2.dispose(); }
Example 10
Source File: DrawingPanel.java From osp with GNU General Public License v3.0 | 5 votes |
/** * Paints all the drawable objects in the panel. * @param g */ protected void paintDrawableList(Graphics g, ArrayList<Drawable> tempList) { if(tempList==null) { return; } Graphics2D g2 = (Graphics2D) g; Iterator<Drawable> it = tempList.iterator(); Shape clipShape = g2.getClip(); int w = getWidth()-leftGutter-rightGutter; int h = getHeight()-bottomGutter-topGutter; if((w<0)||(h<0)) { return; } if(clipAtGutter) { g2.clipRect(leftGutter, topGutter, w, h); } if(!tempList.isEmpty()&&(tempList.get(0) instanceof False3D)) { tempList.get(0).draw(this, g2); } else { while(it.hasNext()) { if(!validImage) { break; // abort drawing } Drawable drawable = it.next(); drawable.draw(this, g2); } } g2.setClip(clipShape); }
Example 11
Source File: ChartsCanvas.java From scelight with Apache License 2.0 | 5 votes |
/** * Paints the charts. * * @param g graphics context in which to paint */ private void paintCharts( final Graphics2D g ) { if ( chartList.isEmpty() ) return; // Calculate charts sizes // Use full width final int chartWidth = getWidth() - INSETS.left - INSETS.right; // Vertical space available for a chart: final int chartVSpace = getHeight() / chartList.size(); // Size > 0 final int chartHeight = chartVSpace - INSETS.top - INSETS.bottom; if ( chartHeight <= 0 ) return; final Rect visibleRect = new Rect( getVisibleRect() ); final Rectangle oldClipBounds = g.getClipBounds(); int y = 0; for ( final Chart< ? > chart : chartList ) { final Rect r = new Rect( INSETS.left, y + INSETS.top, chartWidth, chartHeight ); g.setClip( oldClipBounds ); g.clipRect( r.x1, r.y1, r.width, r.height ); chart.paint( g, r, visibleRect.intersection( r ) ); y += chartVSpace; } g.setClip( oldClipBounds ); }
Example 12
Source File: HighlightableDataset.java From osp with GNU General Public License v3.0 | 5 votes |
/** * Draw this Dataset in the drawing panel. * * @param drawingPanel the drawing panel * @param g the graphics */ public void draw(DrawingPanel drawingPanel, Graphics g) { super.draw(drawingPanel, g); Graphics2D g2 = (Graphics2D) g; int offset = getMarkerSize()+4; int edge = 2*offset; // increase the clip to include the entire highlight Shape clipShape = g2.getClip(); g2.setClip(drawingPanel.leftGutter-offset-1, drawingPanel.topGutter-offset-1, drawingPanel.getWidth()-drawingPanel.leftGutter-drawingPanel.rightGutter+2+2*offset, drawingPanel.getHeight()-drawingPanel.bottomGutter-drawingPanel.topGutter+2+2*offset); Rectangle viewRect = drawingPanel.getViewRect(); if(viewRect!=null) { // decrease the clip if we are in a scroll pane g2.clipRect(viewRect.x, viewRect.y, viewRect.x+viewRect.width, viewRect.y+viewRect.height); } hitShapes = new Shape[index]; double[] xValues = getXPoints(); double[] yValues = getYPoints(); if (screenCoordinates[0]==null || screenCoordinates[0].length!=index) { screenCoordinates[0] = new double[index]; screenCoordinates[1] = new double[index]; } for(int i = 0; i<index; i++) { if(Double.isNaN(yValues[i])) { screenCoordinates[1][i] = Double.NaN; continue; } double xp = drawingPanel.xToPix(xValues[i]); double yp = drawingPanel.yToPix(yValues[i]); screenCoordinates[0][i] = xp; screenCoordinates[1][i] = yp; hitShapes[i] = new Rectangle2D.Double(xp-offset, yp-offset, edge, edge); if(!isHighlighted(i)) { continue; } g2.setColor(highlightColor); g2.fill(hitShapes[i]); } g2.setClip(clipShape); // restore the original clip }
Example 13
Source File: InspectorItemSeparador.java From brModelo with GNU General Public License v3.0 | 5 votes |
@Override protected void paintBase(Graphics2D g) { if (endOFF) { return; } setArea(null); Rectangle r = this.getBounds(); g.setColor(Color.GRAY); g.drawRoundRect(0, 0, r.width - 1, r.height - 1, 10, 10); g.setColor(Color.lightGray); g.drawRoundRect(5, 5, r.height - 10, r.height - 10, 4,4); int met = (r.height - 11) / 2; g.setColor(Color.black); g.drawLine(7, 6 + met, r.height - 7, 6 + met); if ('+' == getEstado()) { g.drawLine(6 + met, 7, 6 + met, r.height - 7); } g.setColor(Color.BLACK); Rectangle bkp = g.getClipBounds(); g.clipRect(0, 0, r.width - 1, r.height); if (isSelecionado()) { g.setFont(new Font(this.getFont().getFontName(), Font.BOLD, getFont().getSize())); g.drawRoundRect(0, 0, r.width - 1, r.height - 1, 10, 10); } int tmp = (r.width - g.getFontMetrics().stringWidth(getTexto())) / 2; g.drawString(getTexto(), tmp, (int) (r.height * 0.72)); g.setClip(bkp); }
Example 14
Source File: ReflectionPanel.java From filthy-rich-clients with BSD 3-Clause "New" or "Revised" License | 5 votes |
private void paintContent(Graphics g) { if (contentBuffer == null || contentBuffer.getWidth() != contentPane.getWidth() || contentBuffer.getHeight() != contentPane.getHeight()) { if (contentBuffer != null) { contentBuffer.flush(); contentGraphics.dispose(); } contentBuffer = GraphicsUtilities.createCompatibleTranslucentImage( contentPane.getWidth(), contentPane.getHeight()); contentGraphics = contentBuffer.createGraphics(); } Graphics2D g2 = contentGraphics; g2.clipRect(contentPane.getX(), contentPane.getY(), contentPane.getWidth(), contentPane.getHeight()); g2.setComposite(AlphaComposite.Clear); Rectangle clip = g.getClipBounds(); g2.fillRect(clip.x, clip.y, clip.width, clip.height); g2.setComposite(AlphaComposite.SrcOver); g2.setColor(g.getColor()); g2.setFont(g.getFont()); super.paint(g2); g.drawImage(contentBuffer, 0, 0, null); }
Example 15
Source File: JTable2Pdf.java From itext2 with GNU Lesser General Public License v3.0 | 4 votes |
/** * Print the table into a PDF file */ private void print() { Document document = new Document(PageSize.A4.rotate()); try { PdfWriter writer = PdfWriter.getInstance(document, PdfTestBase.getOutputStream( "jTable.pdf")); document.open(); PdfContentByte cb = writer.getDirectContent(); // Create the graphics as shapes cb.saveState(); Graphics2D g2 = cb.createGraphicsShapes(500, 500); // Print the table to the graphics Shape oldClip = g2.getClip(); g2.clipRect(0, 0, 500, 500); table.print(g2); g2.setClip(oldClip); g2.dispose(); cb.restoreState(); document.newPage(); // Create the graphics with pdf fonts cb.saveState(); g2 = cb.createGraphics(500, 500); // Print the table to the graphics oldClip = g2.getClip(); g2.clipRect(0, 0, 500, 500); table.print(g2); g2.setClip(oldClip); g2.dispose(); cb.restoreState(); } catch (Exception e) { e.printStackTrace(); System.err.println(e.getMessage()); } document.close(); }
Example 16
Source File: InspectorItemCor.java From brModelo with GNU General Public License v3.0 | 4 votes |
@Override protected void paintBase(Graphics2D g) { Rectangle r = this.getBounds(); int esq = (int) (r.width * Criador.getDivisor()); setArea(new Rectangle(esq -2, 0, 4, r.height - 1)); //int dir = r.width - esq; if (!isSelecionado()) { g.setColor(Color.GRAY); g.drawRoundRect(0, 0, r.width - 1, r.height - 1, 10, 10); g.drawLine(esq, 0, esq, r.height - 1); g.setColor(Color.BLACK); getCorParaTexto(g); Rectangle bkp = g.getClipBounds(); g.clipRect(0, 0, esq - 1, r.height); g.drawString(getTexto(), (Criador.espaco * 2) + 1, (int) (r.height * 0.72)); g.setClip(bkp); int re = esq + r.height -5; g.setColor(CanEdit() ? Color.BLACK : Color.LIGHT_GRAY); g.fillRect(esq + 4, 4, r.height - 9, r.height - 9); try { Color c = util.Utilidades.StringToColor(getTransValor());//new Color(Integer.parseInt(getTransValor())); g.setColor(c); } catch (Exception e) { } Color tmpc = g.getColor(); String bonito = Integer.toString(tmpc.getRed()) + ", " + Integer.toString(tmpc.getGreen()) + ", " +Integer.toString(tmpc.getBlue())+ ", " +Integer.toString(tmpc.getAlpha()); if (CanEdit()) { g.fillRect(esq + 5, 5, r.height - 10, r.height -10); } // g.setColor(CanEdit() ? Color.BLACK : Color.LIGHT_GRAY); // g.drawRect(tmp + 4, 4, r.height - 9, r.height -9); g.clipRect(re, 0, esq - 1, r.height); getCorParaTexto(g); g.drawString(bonito, re + (Criador.espaco * 2) + 1, (int) (r.height * 0.72)); g.setClip(bkp); } else { super.paintBase(g); } }
Example 17
Source File: RoundTextFieldUI.java From pumpernickel with MIT License | 4 votes |
protected void paintRealBackground(Graphics g0) { Graphics g = g0.create(); Insets i = getComponent().getInsets(); g.translate(i.left, i.top); if (editor.isOpaque()) { g.setColor(editor.getBackground()); g.fillRect(0, 0, editor.getWidth(), editor.getHeight()); } Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); if (editor.hasFocus()) { PlafPaintUtils.paintFocus(g2, path, focusPadding); } g2.setColor(editor.getBackground()); g2.fill(path); Shape oldClip = g2.getClip(); g2.clipRect(0, 0, editor.getWidth(), editor.getHeight() / 2); g2.translate(0, 1); g2.setPaint(new Color(0xBBBBBB)); g2.draw(path); g2.translate(0, -1); g2.setClip(oldClip); if (editor.hasFocus() == false) { g2.clipRect(0, editor.getHeight() / 2, editor.getWidth(), editor.getHeight() / 2); g2.translate(0, 1); g2.setPaint(new Color(0x66FFFFFF, true)); g2.draw(path); g2.translate(0, -1); g2.setClip(oldClip); } Rectangle editorRect = getVisibleEditorRect(); g2.setPaint(PlafPaintUtils.getVerticalGradient("roundTextField", editorRect.height, focusPadding, gradientPositions, gradientColors)); g2.draw(path); if (includeSearchIcon()) { searchIcon.paintIcon( editor, g0, editorRect.x - searchIcon.getIconWidth() - 4, editorRect.y + 1 + editorRect.height / 2 - searchIcon.getIconHeight() / 2); } }
Example 18
Source File: LegendView.java From MeteoInfo with GNU Lesser General Public License v3.0 | 4 votes |
private void drawBreakSymbol(ColorBreak aCB, Rectangle rect, boolean selected, Graphics2D g) { g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); float aSize; PointF aP = new PointF(0, 0); float width, height; aP.X = rect.x + rect.width / 2; aP.Y = rect.y + rect.height / 2; //Draw selected back color if (selected) { g.setColor(Color.lightGray); g.fill(new Rectangle(_symbolWidth, rect.y, _valueWidth + _labelWidth, rect.height)); } //Draw symbol switch (aCB.getBreakType()) { case PointBreak: PointBreak aPB = (PointBreak) aCB; aSize = aPB.getSize(); if (aPB.isDrawShape()) { if (aPB.getMarkerType() == MarkerType.Character) { Draw.drawPoint(aP, aPB, g); } else { Draw.drawPoint(aP, aPB, g); } } break; case PolylineBreak: PolylineBreak aPLB = (PolylineBreak) aCB; aSize = aPLB.getWidth(); width = rect.width / 3 * 2; height = rect.height / 3 * 2; Draw.drawPolylineSymbol(aP, width, height, aPLB, g); break; case PolygonBreak: PolygonBreak aPGB = (PolygonBreak) aCB; width = rect.width / 3 * 2; height = rect.height / 5 * 4; if (aPGB.isDrawShape()) { Draw.drawPolygonSymbol(aP, width, height, aPGB, g); } break; case ColorBreak: width = rect.width / 3 * 2; height = rect.height / 3 * 2; Draw.drawPolygonSymbol(aP, aCB.getColor(), Color.black, width, height, true, true, g); break; } g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); //Draw value and label int sX = _symbolWidth; Font aFont = new Font("Simsun", Font.PLAIN, 13); String str = aCB.getCaption(); FontMetrics metrics = g.getFontMetrics(aFont); Dimension size = new Dimension(metrics.stringWidth(str), metrics.getHeight()); aP.X = sX; aP.Y = rect.y + rect.height * 3 / 4; g.setFont(aFont); g.setColor(Color.black); if (_legendScheme.getLegendType() == LegendType.SingleSymbol) { g.drawString(str, aP.X, aP.Y); } else { //Label aP.X += _valueWidth; g.drawString(str, aP.X, aP.Y); //Value if (String.valueOf(aCB.getStartValue()).equals( String.valueOf(aCB.getEndValue()))) { str = String.valueOf(aCB.getStartValue()); } else { str = String.valueOf(aCB.getStartValue()) + " - " + String.valueOf(aCB.getEndValue()); } //size = new Dimension(metrics.stringWidth(str), metrics.getHeight()); aP.X = sX; Rectangle clip = g.getClipBounds(); g.clipRect(sX, rect.y, this._valueWidth - 5, rect.height); g.drawString(str, aP.X, aP.Y); g.setClip(clip.x, clip.y, clip.width, clip.height); } }
Example 19
Source File: EquipmentScreen.java From open-ig with GNU Lesser General Public License v3.0 | 4 votes |
@Override public void draw(Graphics2D g2) { base.height = height - 38; RenderTools.darkenAround(base, width, height, g2, 0.5f, true); g2.drawImage(commons.equipment().panelTop, base.x, base.y, null); RenderTools.fill(g2, base.x, base.y + commons.equipment().panelTop.getHeight(), base.width, base.y + base.height - commons.equipment().panelBottom.getHeight(), commons.equipment().panelMiddle); g2.drawImage(commons.equipment().panelBottom, base.x, base.y + base.height - commons.equipment().panelBottom.getHeight(), null); RenderTools.fill(g2, leftPanel, commons.equipment().leftStars); RenderTools.fill(g2, rightPanel, commons.equipment().rightStars); update(); if (planetVisible) { Shape save0 = g2.getClip(); g2.clipRect(leftPanel.x, leftPanel.y, leftPanel.width, leftPanel.height); BufferedImage planet = planet().type.equipment; g2.drawImage(planet, leftPanel.x, leftPanel.y + (leftPanel.height - planet.getHeight()) / 2, null); g2.setClip(save0); } super.draw(g2); if (innerEquipmentVisible) { g2.setColor(new Color(0, 0, 0, 128)); g2.fillRect(innerEquipment.x, innerEquipment.y, innerEquipment.width - 1, innerEquipment.height - 1); g2.setColor(new Color(0xFF4D7DB6)); g2.drawRect(innerEquipment.x, innerEquipment.y, innerEquipment.width - 1, innerEquipment.height - 1); drawAgain(g2, innerEquipmentName); drawAgain(g2, innerEquipmentSeparator); drawAgain(g2, innerEquipmentValue); } if (secondary == null) { if (!fleetListing.visible()) { if (configure.item != null && configure.item.count > 0) { drawDPS(g2, configure.item); } else if (configure.type != null) { Player o; int cnt; if (player().selectionMode == SelectionMode.PLANET || fleet() == null) { o = planet().owner; cnt = planet().inventoryCount(configure.type, o); } else { o = fleet().owner; cnt = fleet().inventoryCount(configure.type); } if (cnt > 0) { InventoryItem ii = new InventoryItem(world().newId(), o, configure.type); ii.count = cnt; ii.init(); drawDPS(g2, ii); } } } drawTotalDPS(g2); if (upgradeVisible && secondary == null && !fleetListing.visible() && configure.selectedSlot == null) { drawUpgrades(g2); } } }
Example 20
Source File: AbstractSearchHighlight.java From pumpernickel with MIT License | 3 votes |
/** * This paints the text in the image. * * @param g * the graphics to paint to. * @param textRect * the rectangle in g the text is painted in. * @param textRectInTextComponent * the rectangle relative to the text component. */ protected void paintHighlightForeground(Graphics2D g, Rectangle textRect, Rectangle textRectInTextComponent) { int tx = -textRectInTextComponent.x + textRect.x; int ty = -textRectInTextComponent.y + textRect.y; g.translate(tx, ty); g.clipRect(textRectInTextComponent.x, textRectInTextComponent.y, textRectInTextComponent.width, textRectInTextComponent.height); paintOnlyText(g); }