/** * Create a new empty image panel */ public ImagePanel() { super(); Color base = Color.gray; BufferedImage image = new BufferedImage(50, 50, BufferedImage.TYPE_INT_ARGB); Graphics2D g = (Graphics2D) image.getGraphics(); g.setColor(base); g.fillRect(0, 0, image.getWidth(), image.getHeight()); g.setColor(base.darker()); g.fillRect(image.getWidth() / 2, 0, image.getWidth() / 2, image .getHeight() / 2); g.fillRect(0, image.getHeight() / 2, image.getWidth() / 2, image .getHeight() / 2); background = new TexturePaint(image, new Rectangle(0, 0, image .getWidth(), image.getHeight())); setBackground(Color.black); }
private static Paint createTransparentCheckeredPaint(Color color, int checkerSize) { int s = checkerSize; BufferedImage bufferedImage = new BufferedImage(2 * s, 2 * s, BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = bufferedImage.createGraphics(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, // Anti-alias! RenderingHints.VALUE_ANTIALIAS_ON); Color c1 = DataStructureUtils.setColorAlpha(color, (int) (color.getAlpha() * .8)); Color c2 = DataStructureUtils.setColorAlpha(color, (int) (color.getAlpha() * .2)); g2.setStroke(new BasicStroke(0)); g2.setPaint(c2); g2.setColor(c2); g2.fillRect(0, 0, s, s); g2.fillRect(s, s, s, s); g2.setPaint(c1); g2.setColor(c1); g2.fillRect(0, s, s, s); g2.fillRect(s, 0, s, s); // paint with the texturing brush Rectangle2D rect = new Rectangle2D.Double(0, 0, 2 * s, 2 * s); return new TexturePaint(bufferedImage, rect); }
private TexturePaint makeTexturePaint(int size, boolean alpha) { int s2 = size / 2; int type = alpha ? BufferedImage.TYPE_INT_ARGB : BufferedImage.TYPE_INT_RGB; BufferedImage img = new BufferedImage(size, size, type); Color[] colors = makeGradientColors(4, alpha); Graphics2D g2d = img.createGraphics(); g2d.setComposite(AlphaComposite.Src); g2d.setColor(colors[0]); g2d.fillRect(0, 0, s2, s2); g2d.setColor(colors[1]); g2d.fillRect(s2, 0, s2, s2); g2d.setColor(colors[3]); g2d.fillRect(0, s2, s2, s2); g2d.setColor(colors[2]); g2d.fillRect(s2, s2, s2, s2); g2d.dispose(); Rectangle2D bounds = new Rectangle2D.Float(0, 0, size, size); return new TexturePaint(img, bounds); }
public void doPaint(Graphics2D g2d) { BufferedImage patternImage = new BufferedImage(2,2,BufferedImage.TYPE_INT_ARGB); Graphics gImage = patternImage.getGraphics(); gImage.setColor(Color.WHITE); gImage.drawLine(0,1,1,0); gImage.setColor(Color.BLACK); gImage.drawLine(0,0,1,1); gImage.dispose(); Rectangle2D.Double shape = new Rectangle2D.Double(0,0,DIM*6/5, DIM*8/5); g2d.setPaint(new TexturePaint(patternImage, new Rectangle2D.Double(0,0, DIM*6/50, DIM*8/50))); g2d.fill(shape); g2d.setPaint(Color.BLACK); g2d.draw(shape); }
@Override public void paint(Graphics g0) { super.paint(g0); //may be necessary for some look-and-feels? Graphics2D g = (Graphics2D)g0; Color c = getForeground(); int w2 = Math.min(getWidth(), w); int h2 = Math.min(getHeight(), w); Rectangle r = new Rectangle(getWidth()/2-w2/2,getHeight()/2-h2/2, w2, h2); if(c.getAlpha()<255) { TexturePaint checkers = getCheckerPaint(); g.setPaint(checkers); g.fillRect(r.x, r.y, r.width, r.height); } g.setColor(c); g.fillRect(r.x, r.y, r.width, r.height); PlafPaintUtils.drawBevel(g, r); }
@Override public void paint(Graphics g0, JComponent c) { Graphics2D g = (Graphics2D)g0; ColorWell well = (ColorWell)c; Color color = well.getColor(); Border border = c.getBorder(); Insets borderInsets = border.getBorderInsets(c); if(color.getAlpha()<255) { TexturePaint checkers = PlafPaintUtils.getCheckerBoard(8); g.setPaint(checkers); g.fillRect(borderInsets.left, borderInsets.top, c.getWidth()-borderInsets.left-borderInsets.right, c.getHeight()-borderInsets.top-borderInsets.bottom); } g.setColor(color); g.fillRect(borderInsets.left, borderInsets.top, c.getWidth()-borderInsets.left-borderInsets.right, c.getHeight()-borderInsets.top-borderInsets.bottom); }
protected void setMetalColor(Color c) { BufferedImage image = BrushedMetalLook.getImage(c); texturePaint = new TexturePaint(image, new Rectangle(0,0,image.getWidth(),image.getHeight())); Shape shape = new Ellipse2D.Float(100,100,400,400); image = BrushedMetalLook.paint(shape, 20, null, c, true); Icon icon1 = new ImageIcon(image); label1.setIcon(icon1); shape = new Line2D.Float(100,100,500,500); image = BrushedMetalLook.paint(shape, 20, null, c, true); ImageIcon icon2 = new ImageIcon(image); label2.setIcon(icon2); shape = new Line2D.Float(100,500,500,100); image = BrushedMetalLook.paint(shape, 20, null, c, true); ImageIcon icon3 = new ImageIcon(image); label3.setIcon(icon3); tabs.repaint(); }
/** * @param paint Paint to be converted to SVG * @return a descriptor of the corresponding SVG paint */ public SVGPaintDescriptor toSVG(Paint paint){ // we first try the extension handler because we may // want to override the way a Paint is managed! SVGPaintDescriptor paintDesc = svgCustomPaint.toSVG(paint); if (paintDesc == null) { if (paint instanceof Color) paintDesc = SVGColor.toSVG((Color)paint, generatorContext); else if (paint instanceof GradientPaint) paintDesc = svgLinearGradient.toSVG((GradientPaint)paint); else if (paint instanceof TexturePaint) paintDesc = svgTexturePaint.toSVG((TexturePaint)paint); } return paintDesc; }
@CalledOnlyBy(AmidstThread.EDT) public Drawer( FragmentGraph graph, FragmentGraphToScreenTranslator translator, Zoom zoom, Movement movement, List<Widget> widgets, Iterable<FragmentDrawer> drawers, Setting<Dimension> dimensionSetting, Graphics2DAccelerationCounter accelerationCounter) { this.graph = graph; this.translator = translator; this.zoom = zoom; this.movement = movement; this.widgets = widgets; this.drawers = drawers; this.dimensionSetting = dimensionSetting; this.accelerationCounter = accelerationCounter; this.voidTexturePaint = new TexturePaint( VOID_TEXTURE, new Rectangle(0, 0, VOID_TEXTURE.getWidth(), VOID_TEXTURE.getHeight())); }
/** * Updates the image shown in attributes panel. */ private void updateAttributesPreviewImage() { BufferedImage attributesPreviewImage = this.attributesPreviewComponent.getImage(); if (attributesPreviewImage == null || attributesPreviewImage == this.imageChoicePreviewComponent.getImage()) { attributesPreviewImage = new BufferedImage(IMAGE_PREFERRED_SIZE, IMAGE_PREFERRED_SIZE, BufferedImage.TYPE_INT_RGB); this.attributesPreviewComponent.setImage(attributesPreviewImage); } // Fill image with a white background Graphics2D g2D = (Graphics2D) attributesPreviewImage.getGraphics(); g2D.setPaint(Color.WHITE); g2D.fillRect(0, 0, IMAGE_PREFERRED_SIZE, IMAGE_PREFERRED_SIZE); BufferedImage textureImage = this.imageChoicePreviewComponent.getImage(); if (textureImage != null) { // Draw the texture image as if it will be shown on a 250 x 250 cm wall g2D.setPaint(new TexturePaint(textureImage, new Rectangle2D.Float(0, 0, this.controller.getWidth() / 250 * IMAGE_PREFERRED_SIZE, this.controller.getHeight() / 250 * IMAGE_PREFERRED_SIZE))); g2D.fillRect(0, 0, IMAGE_PREFERRED_SIZE, IMAGE_PREFERRED_SIZE); } g2D.dispose(); this.attributesPreviewComponent.repaint(); }
private void setTexturedIcon(Component c, BufferedImage textureImage, float angle) { // Paint plan icon in an image BufferedImage image = new BufferedImage(getIconWidth(), getIconHeight(), BufferedImage.TYPE_INT_ARGB); final Graphics2D imageGraphics = (Graphics2D) image.getGraphics(); imageGraphics.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); PieceOfFurniturePlanIcon.super.paintIcon(c, imageGraphics, 0, 0); // Fill the pixels of plan icon with texture image imageGraphics .setPaint(new TexturePaint(textureImage, new Rectangle2D.Float(0, 0, -getIconWidth() / this.pieceWidth * this.pieceTexture.getWidth(), -getIconHeight() / this.pieceDepth * this.pieceTexture.getHeight()))); imageGraphics.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_IN)); imageGraphics.rotate(angle); float maxDimension = Math.max(image.getWidth(), image.getHeight()); imageGraphics.fill(new Rectangle2D.Float(-maxDimension, -maxDimension, 3 * maxDimension, 3 * maxDimension)); imageGraphics.fillRect(0, 0, getIconWidth(), getIconHeight()); imageGraphics.dispose(); setIcon(new ImageIcon(image)); }
/** * Creates a new {@code Paint} that is a checkered effect using the specified colors. * <p> * While this method supports transparent colors, this implementation performs painting * operations using the second color after it performs operations using the first color. This * means that to create a checkered paint with a fully-transparent color, you MUST specify that * color first. * * @param c1 * the first color * @param c2 * the second color * @param size * the size of the paint * @return a new {@code Paint} checkering the supplied colors */ public static Paint getCheckerPaint(Paint c1, Paint c2, int size) { BufferedImage img = GraphicsUtilities.createCompatibleTranslucentImage(size, size); Graphics2D g = img.createGraphics(); try { g.setPaint(c1); g.fillRect(0, 0, size, size); g.setPaint(c2); g.fillRect(0, 0, size / 2, size / 2); g.fillRect(size / 2, size / 2, size / 2, size / 2); } finally { g.dispose(); } return new TexturePaint(img,new Rectangle(0,0,size,size)); }
/** Creates new form WelcomePanel */ public WelcomePanel() { initComponents(); setOpaque(true); welcomeTooltipMap.put(jxHelpLabel, "<html> <h2 style='color:#953333; font-weight: bold;'>Integrierte Hilfe</h2> DS Workbench bietet eine umfangreiche Hilfe, die du im Programm jederzeit über <strong>F1</strong> aufrufen kannst. Dabei wird versucht, das passende Hilfethema für die Ansicht, in der du dich gerade befindest, auszuwählen. Es schadet aber auch nicht, einfach mal so in der Hilfe zu stöbern um neue Funktionen zu entdecken. Einsteiger sollten in jedem Fall die ersten drei Kapitel der Wichtigen Grundlagen gelesen haben.</html>"); welcomeTooltipMap.put(jxCommunityLabel, "<html> <h2 style='color:#953333; font-weight: bold;'>Die DS Workbench Community</h2> Natürlich gibt es neben dir noch eine Vielzahl anderer Spieler, die DS Workbench regelmäßig und intensiv benutzen. Einen perfekten Anlaufpunkt für alle Benutzer bietet das DS Workbench Forum, wo man immer jemanden trifft mit dem man Erfahrungen austauschen und wo man Fragen stellen kann.</html>"); welcomeTooltipMap.put(jxIdeaLabel, "<html> <h2 style='color:#953333; font-weight: bold;'>Verbesserungen und Ideen </h2> Gibt es irgendwas wo du meinst, dass es in DS Workbench fehlt und was anderen Benutzern auch helfen könnte? Hast du eine Idee, wie man DS Workbench verbessern oder die Handhabung vereinfachen könnte? Dann bietet dieser Bereich im DS Workbench Forum die perfekte Anlaufstelle für dich. Trau dich und hilf mit, DS Workbench zu verbessern. </html>"); welcomeTooltipMap.put(jxFacebookLabel, "<html> <h2 style='color:#953333; font-weight: bold;'>DS Workbench @ Facebook</h2> Natürlich gehört es heutzutage fast zum guten Ton, bei Facebook in irgendeiner Art und Weise vertreten zu sein. Auch DS Workbench hat eine eigene Facebook Seite, mit deren Hilfe ihr euch jederzeit über aktuelle News oder Geschehnisse im Zusammenhang mit DS Workbench informieren könnt.</html>"); welcomeTooltipMap.put(jContentLabel, "<html> <h2 style='color:#953333'>Willkommen bei DS Workbench</h2> Wenn du diese Seite siehst, dann hast du DS Workbench erfolgreich installiert und die ersten Schritte ebenso erfolgreich gemeistert. Eigentlich steht nun einer unbeschwerten Angriffsplanung und -durchführung nichts mehr im Wege. Erlaube mir trotzdem kurz auf einige Dinge hinzuweisen, die dir möglicherweise beim <b>Umgang mit DS Workbench helfen</b> oder aber dir die Möglichkeit geben, einen wichtigen Teil zur <b>Weiterentwicklung und stetigen Verbesserung</b> dieses Programms beizutragen. Fahre einfach mit der Maus über eins der vier Symbole in den Ecken, um hilfreiche und interessante Informationen rund um DS Workbench zu erfahren. Klicke auf ein Symbol, um direkt zum entsprechenden Ziel zu gelangen. Die Einträge findest du später auch im Hauptmenü unter 'Sonstiges'. <br> <h3 style='color:#953333'> Nun aber viel Spaß mit DS Workbench.</h3> </html>"); try { back = ImageIO.read(WelcomePanel.class.getResource("/images/c.gif")); } catch (Exception ignored) { } if (back != null) { setBackgroundPainter(new MattePainter(new TexturePaint(back, new Rectangle2D.Float(0, 0, 200, 20)))); } }
/** * Fill polygon * * @param points The points array * @param g Graphics2D * @param aPGB Polygon break */ public static void fillPolygon(PointF[] points, Graphics2D g, PolygonBreak aPGB) { GeneralPath path = new GeneralPath(GeneralPath.WIND_EVEN_ODD, points.length); for (int i = 0; i < points.length; i++) { if (i == 0) { path.moveTo(points[i].X, points[i].Y); } else { path.lineTo(points[i].X, points[i].Y); } } path.closePath(); if (aPGB != null) { if (aPGB.isUsingHatchStyle()) { int size = aPGB.getStyleSize(); BufferedImage bi = getHatchImage(aPGB.getStyle(), size, aPGB.getColor(), aPGB.getBackColor()); Rectangle2D rect = new Rectangle2D.Double(0, 0, size, size); g.setPaint(new TexturePaint(bi, rect)); g.fill(path); } else { g.fill(path); } } else { g.fill(path); } }
/** * Draw polygon symbol * * @param aP The point * @param width The width * @param height The height * @param aPGB The polygon break * @param g Graphics2D */ public static void drawPolygonSymbol(PointF aP, float width, float height, PolygonBreak aPGB, Graphics2D g) { aP.X = aP.X - width / 2; aP.Y = aP.Y - height / 2; if (aPGB.isDrawFill()) { if (aPGB.isUsingHatchStyle()) { int size = aPGB.getStyleSize(); BufferedImage bi = getHatchImage(aPGB.getStyle(), size, aPGB.getColor(), aPGB.getBackColor()); Rectangle2D rect = new Rectangle2D.Double(0, 0, size, size); g.setPaint(new TexturePaint(bi, rect)); g.fill(new Rectangle.Float(aP.X, aP.Y, width, height)); } else { g.setColor(aPGB.getColor()); g.fill(new Rectangle.Float(aP.X, aP.Y, width, height)); } } if (aPGB.isDrawOutline()) { g.setColor(aPGB.getOutlineColor()); g.setStroke(new BasicStroke(aPGB.getOutlineSize())); g.draw(new Rectangle.Float(aP.X, aP.Y, width, height)); } }
/** * Draw rectangle * * @param aPoint Start point * @param width Width * @param height Height * @param aPGB Polygon break * @param g Graphics2D */ public static void drawRectangle(PointF aPoint, float width, float height, PolygonBreak aPGB, Graphics2D g) { Color aColor = aPGB.getColor(); if (aPGB.isDrawFill()) { if (aPGB.isUsingHatchStyle()) { int size = aPGB.getStyleSize(); BufferedImage bi = getHatchImage(aPGB.getStyle(), size, aPGB.getColor(), aPGB.getBackColor()); Rectangle2D rect = new Rectangle2D.Double(0, 0, size, size); g.setPaint(new TexturePaint(bi, rect)); g.fill(new Rectangle.Float(aPoint.X, aPoint.Y, width, height)); } else { g.setColor(aColor); g.fill(new Rectangle.Float(aPoint.X, aPoint.Y, width, height)); } } if (aPGB.isDrawOutline()) { g.setColor(aPGB.getOutlineColor()); g.setStroke(new BasicStroke(aPGB.getOutlineSize())); g.draw(new Rectangle.Float(aPoint.X, aPoint.Y, width, height)); } }
public void paint(Graphics g0) { super.paint(g0); //may be necessary for some look-and-feels? Graphics2D g = (Graphics2D)g0; Color c = getForeground(); int w2 = Math.min(getWidth(), w); int h2 = Math.min(getHeight(), w); Rectangle r = new Rectangle(getWidth()/2-w2/2,getHeight()/2-h2/2, w2, h2); if(c.getAlpha()<255) { TexturePaint checkers = getCheckerPaint(); g.setPaint(checkers); g.fillRect(r.x, r.y, r.width, r.height); } g.setColor(c); g.fillRect(r.x, r.y, r.width, r.height); PlafPaintUtils.drawBevel(g, r); }
public static TexturePaint createTexture(Color c1, Color c2) { int gridSize = 10; BufferedImage img = new BufferedImage(gridSize * 2, gridSize * 2, BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = img.createGraphics(); AlphaComposite ac = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.2f); g2.setComposite(ac); g2.setColor(c1 != null ? c1 : COLOR1); g2.fillRect(0, 0, 10, 10); g2.fillRect(10, 10, 10, 10); g2.setColor(c2 != null ? c2 : COLOR2); g2.fillRect(10, 0, 10, 10); g2.fillRect(0, 10, 10, 10); return new TexturePaint(img, new java.awt.Rectangle(0, 0, gridSize, gridSize)); }
public static Paint getCheckerPaint(Color c1, Color c2, int size) { BufferedImage img = new BufferedImage(size,size,BufferedImage.TYPE_INT_ARGB); Graphics g = img.getGraphics(); try { g.setColor(c1); g.fillRect(0, 0, size, size); g.setColor(c2); g.fillRect(0, 0, size / 2, size / 2); g.fillRect(size / 2, size / 2, size / 2, size / 2); } finally { g.dispose(); } return new TexturePaint(img,new Rectangle(0,0,size,size)); }
private void read() throws IOException { LittleEndianInputStream in = new LittleEndianInputStream( GameFiles.open(name + "_0.z2raw")); try { int ver = in.readInt(); if (ver < 0 || ver > 1) throw new FileFormatException("Unrecognized version"); width = in.readInt(); height = in.readInt(); bits = in.readInt(); BufferedImage im = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); if (ver == 0) readRaw(im, in); else readRLE(im, in); texture = new TexturePaint(im, new Rectangle2D.Double(0, 0, 0x8000, 0x8000)); originalTexture = texture; } catch (ArrayIndexOutOfBoundsException e) { throw new FileFormatException("Invalid array index", e); } finally { in.close(); } }
/** * Create a cross hatched texture * @param size internal image size (height = width) * @param backgroundColor background color * @param stripeColor line color * @param stroke line stroke * @return cross hatched texture paint */ public static Paint createHatchedTexturePaint(final int size, final Color backgroundColor, final Color stripeColor, final Stroke stroke) { // create buffered image (alpha): final BufferedImage bufferedImage = new BufferedImage(size, size, BufferedImage.TYPE_INT_ARGB); final Graphics2D g2d = bufferedImage.createGraphics(); // LBO: use antialiasing: g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2d.setColor(backgroundColor); g2d.fillRect(0, 0, size, size); g2d.setStroke(stroke); g2d.setColor(stripeColor); g2d.drawLine(0, 0, size, size); g2d.drawLine(0, size, size, 0); g2d.dispose(); return new TexturePaint(bufferedImage, new Rectangle(0, 0, size, size)); }
/** * Get the Paint for these attributes, and scale it for the scale compared to * the base scale set if the fill Paint is a TexturePattern. If the base * scale equals NONE, or if the Paint is not a TexturePaint, it's the same as * getFillPaint(). * * @param scale scale to compare to the base scale. * @return a Paint object to use for the fill, scaled if necessary. */ public Paint getFillPaintForScale(float scale) { if (fillPattern != null) { if (baseScale != NONE) { BufferedImage bi = fillPattern.getImage(); float scaleFactor = scale / baseScale; Image image = bi.getScaledInstance((int) (bi.getWidth() * scaleFactor), (int) (bi.getHeight() * scaleFactor), Image.SCALE_SMOOTH); try { bi = BufferedImageHelper.getBufferedImage(image, 0, 0, -1, -1); return new TexturePaint(bi, new Rectangle(0, 0, bi.getWidth(), bi.getHeight())); } catch (InterruptedException ie) { if (logger.isLoggable(Level.FINE)) { logger.warning("DrawingAttributes: Interrupted Exception scaling texture paint"); } } } return fillPattern; } else { return fillPaint; } }