private void drawTextInImgCenter(BufferedImage baseImage, String textToWrite, int y) { Graphics2D g2D = (Graphics2D) baseImage.getGraphics(); g2D.setColor(new Color(167, 136, 69)); String fontName = "Microsoft YaHei"; Font f = new Font(fontName, Font.PLAIN, 28); g2D.setFont(f); g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); // 计算文字长度,计算居中的x点坐标 FontMetrics fm = g2D.getFontMetrics(f); int textWidth = fm.stringWidth(textToWrite); int widthX = (baseImage.getWidth() - textWidth) / 2; // 表示这段文字在图片上的位置(x,y) .第一个是你设置的内容。 g2D.drawString(textToWrite, widthX, y); // 释放对象 g2D.dispose(); }
private static BufferedImage scaleDown(BufferedImage sourceImage, int targetWidth, int targetHeight) { int sourceWidth = sourceImage.getWidth(); int sourceHeight = sourceImage.getHeight(); BufferedImage targetImage = new BufferedImage(targetWidth, targetHeight, sourceImage.getType()); Graphics2D g = targetImage.createGraphics(); g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR); g.drawImage(sourceImage, 0, 0, targetWidth, targetHeight, 0, 0, sourceWidth, sourceHeight, null); g.dispose(); return targetImage; }
private static BufferedImage createImage (int width, int height, Color color) { BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR); Graphics2D g = image.createGraphics(); g.setColor(color); g.fillRect(0, 0, width, height); g.dispose(); return image; } }
private void applyRenderHints(Graphics g) { if (g instanceof Graphics2D) { Graphics2D g2d = (Graphics2D) g; if (DESKTOP_HINTS != null) { g2d.setRenderingHints(DESKTOP_HINTS); } else { g2d.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); g2d.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON); } } }
/** Returns an image that can be used by effects as a temp image. */ static public BufferedImage getScratchImage () { Graphics2D g = (Graphics2D)scratchImage.getGraphics(); g.setComposite(AlphaComposite.Clear); g.fillRect(0, 0, GlyphPage.MAX_GLYPH_SIZE, GlyphPage.MAX_GLYPH_SIZE); g.setComposite(AlphaComposite.SrcOver); g.setColor(java.awt.Color.white); return scratchImage; }
Graphics2D g2d = (Graphics2D) g.create(); g2d.setColor(new Color(0xFFAA00)); g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setStroke(basicStroke); g2d.drawRoundRect(3, 3, getWidth()-4, getHeight()-4, archH, archH); setLayout(new GridBagLayout()); add(usrNameLabel, labCnst); add(usrNameFeild, txtCnst); comp.setFont(getFont().deriveFont(Font.BOLD, 13)); Rectangle2D txRect = new Rectangle2D.Double(0, 0, textureImg.getWidth(), textureImg.getHeight()); TexturePaint txPaint = new TexturePaint(textureImg, txRect); g2d.setPaint(txPaint); g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.3f)); if(gradientImage==null || gradientImage.getHeight() != getHeight()) g2d.setPaint(lgrPaint); JFrame frame = new JFrame("Demo: LogIn Dialogue");
return new Dimension(image.getWidth(), image.getHeight()); int w = old.getWidth(); int h = old.getHeight(); BufferedImage img = new BufferedImage( w, h, BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = img.createGraphics(); g2d.drawImage(old, 0, 0, null); g2d.setPaint(Color.red); g2d.setFont(new Font("Serif", Font.BOLD, 20)); String s = "Hello, world!"; FontMetrics fm = g2d.getFontMetrics(); int x = img.getWidth() - fm.stringWidth(s) - 5; int y = fm.getHeight(); g2d.drawString(s, x, y); g2d.dispose(); return img; JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new TextOverlay()); f.pack(); f.setVisible(true);
BufferedImage img = new BufferedImage(PREF_W, PREF_H, BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = img.createGraphics(); g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setStroke(BASIC_STROKE); g2.setColor(Color.blue); int circleCount = 10; for (int i = 0; i < circleCount ; i++) { int w = PREF_W - 2 * x; int h = w; g2.drawOval(x, y, w, h); g2.dispose(); return img; BufferedImage img = new BufferedImage(PREF_W, PREF_H, g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setStroke(BASIC_STROKE); g2.setComposite(comp ); return new Dimension(PREF_W, PREF_H);
+ "The effect we want is a multi-line label."; JFrame f = new JFrame("Label Render Test"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); BufferedImage image = new BufferedImage( 400, 300, BufferedImage.TYPE_INT_RGB); Graphics2D imageGraphics = image.createGraphics(); GradientPaint gp = new GradientPaint( 20f, 280f, Color.orange); imageGraphics.setPaint(gp); imageGraphics.fillRect(0, 0, 400, 300); textLabel.setSize(textLabel.getPreferredSize()); JLabel imageLabel = new JLabel(ii); f.getContentPane().add(imageLabel); f.pack(); f.setLocationByPlatform(true); f.setVisible(true);
frame.pack(); frame.setVisible(true); this.setPreferredSize(new Dimension( image.getWidth(null), image.getHeight(null))); this.addMouseListener(new MouseAdapter() { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.translate(this.getWidth() / 2, this.getHeight() / 2); g2d.rotate(theta); g2d.translate(-image.getWidth(this) / 2, -image.getHeight(this) / 2); g2d.drawImage(image, 0, 0, null); return new Dimension(SIZE, SIZE); BufferedImage bi = new BufferedImage( size, size, BufferedImage.TYPE_INT_ARGB); Graphics2D g2d = bi.createGraphics(); g2d.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setPaint(Color.getHSBColor(r.nextFloat(), 1, 1)); g2d.setStroke(new BasicStroke(size / 8)); g2d.drawLine(0, size / 2, size, size / 2); g2d.drawLine(size / 2, 0, size / 2, size);
private void init() { if (frame != null) frame.setVisible(false); frame = new JFrame(); offscreenImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); onscreenImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); offscreen = offscreenImage.createGraphics(); onscreen = onscreenImage.createGraphics(); setXscale(); setYscale(); offscreen.setColor(DEFAULT_CLEAR_COLOR); offscreen.fillRect(0, 0, width, height); setPenColor(); setPenRadius(); RenderingHints.VALUE_ANTIALIAS_ON); hints.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); offscreen.addRenderingHints(hints); draw.addMouseMotionListener(this); frame.setContentPane(draw); frame.addKeyListener(this); // JLabel cannot get keyboard focus frame.setResizable(false);
addMouseListener(myMouseAdapter); addMouseMotionListener(myMouseAdapter); return new Dimension(PREF_W, PREF_H); super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setStroke(STROKE); g.setColor(POINTS_COLOR); for (List<Point> pointList : pointsList) { if (pointList.size() > 1) { int x2 = p2.x; int y2 = p2.y; g.drawLine(x1, y1, x2, y2); p1 = p2; g.setColor(CURRENT_POINTS_COLOR); if (currentPointList != null && currentPointList.size() > 1) { Point p1 = currentPointList.get(0); currentPointList = new ArrayList<Point>(); currentPointList.add(mEvt.getPoint()); repaint();
canvas = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); fillCanvas(Color.BLUE); drawRect(Color.RED, 0, 0, width/2, height/2); return new Dimension(canvas.getWidth(), canvas.getHeight()); super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.drawImage(canvas, null, null); repaint(); repaint(); repaint(); int width = 640; int height = 480; JFrame frame = new JFrame("Direct draw demo"); frame.add(panel); frame.pack(); frame.setVisible(true); frame.setResizable(false); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.setColor(Color.WHITE); g2.fillRect(padding + labelPadding, padding, getWidth() - (2 * padding) - labelPadding, getHeight() - 2 * padding - labelPadding); g2.setColor(Color.BLACK); g2.drawString(yLabel, x0 - labelWidth - 5, y0 + (metrics.getHeight() / 2) - 3); g2.drawString(xLabel, x0 - labelWidth / 2, y0 + metrics.getHeight() + 3); Stroke oldStroke = g2.getStroke(); g2.setColor(lineColor); g2.setStroke(GRAPH_STROKE); for (int i = 0; i < graphPoints.size() - 1; i++) { int x1 = graphPoints.get(i).x; g2.setStroke(oldStroke); invalidate(); this.repaint();
if (scale <= 0) throw new IllegalArgumentException("scale cannot be <= 0: " + scale); int width = image.getWidth(), height = image.getHeight(); if (image.getType() != BufferedImage.TYPE_4BYTE_ABGR) { BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR); newImage.getGraphics().drawImage(image, 0, 0, null); image = newImage; height -= 2; BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR); newImage.getGraphics().drawImage(image, 0, 0, width, height, 1, 1, width + 1, height + 1, null); image = newImage; BufferedImage newImage = new BufferedImage(width, height, BufferedImage.TYPE_4BYTE_ABGR); if (scale < 1) { newImage.getGraphics().drawImage(image.getScaledInstance(width, height, Image.SCALE_AREA_AVERAGING), 0, 0, null); } else { Graphics2D g = (Graphics2D)newImage.getGraphics(); g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY); g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, resampling.value); g.drawImage(image, 0, 0, width, height, null);
final JFrame frame = new JFrame("Nested Layout Example"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); plafComponents.add(plafChooser); plafComponents.add(pack); gui.add(plafComponents, BorderLayout.NORTH); new TitledBorder("GridBagLayout()") ); BufferedImage bi = new BufferedImage( 200,200,BufferedImage.TYPE_INT_ARGB); Graphics2D g = bi.createGraphics(); GradientPaint gp = new GradientPaint( 20f,20f,Color.red, 180f,180f,Color.yellow); g.setPaint(gp); g.fillRect(0,0,200,200); ImageIcon ii = new ImageIcon(bi); JLabel imageLabel = new JLabel(ii); gui.add( splitPane, BorderLayout.CENTER ); frame.setContentPane(gui); frame.pack(); frame.setLocationRelativeTo(null);
private JFrame frame = new JFrame("sssssssss"); private JButton tip1Null = new JButton(" test button "); tip1Null.setFont(new Font("Serif", Font.BOLD, 14)); tip1Null.setForeground(Color.darkGray); tip1Null.setPreferredSize(new Dimension(50, 30)); tip1Null.addActionListener(new java.awt.event.ActionListener() { @Override ((Graphics2D) g).setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setColor(color); g.drawRoundRect(x, y, width, height, MARGIN, MARGIN); 0.0F, (float) c.getHeight() / (float) 2, color1, 0.0F, 0.0F, color2); Rectangle rec1 = new Rectangle(0, 0, c.getWidth(), c.getHeight() / 2); g2D.setPaint(gradient1); g2D.fill(rec1); GradientPaint gradient2 = new GradientPaint( 0.0F, (float) c.getHeight() / (float) 2, color3, 0.0F, c.getHeight(), color4); Rectangle rec2 = new Rectangle(0, c.getHeight() / 2, c.getWidth(), c.getHeight()); g2D.setPaint(gradient2); g2D.fill(rec2); paintText(g, b, b.getBounds(), b.getText()); g.setColor(Color.red.brighter()); g.fillRect(0, 0, b.getSize().width, b.getSize().height);
super.paintComponent(g); Graphics2D g2 = (Graphics2D)g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2.drawLine(BORDER_GAP, getHeight() - BORDER_GAP, BORDER_GAP, BORDER_GAP); g2.drawLine(BORDER_GAP, getHeight() - BORDER_GAP, getWidth() - BORDER_GAP, getHeight() - BORDER_GAP); int y0 = getHeight() - (((i + 1) * (getHeight() - BORDER_GAP * 2)) / Y_HATCH_CNT + BORDER_GAP); int y1 = y0; g2.drawLine(x0, y0, x1, y1); Stroke oldStroke = g2.getStroke(); g2.setColor(GRAPH_COLOR); g2.setStroke(GRAPH_STROKE); for (int i = 0; i < graphPoints.size() - 1; i++) { int x1 = graphPoints.get(i).x; g2.setStroke(oldStroke); g2.setColor(GRAPH_POINT_COLOR); for (int i = 0; i < graphPoints.size(); i++) { return new Dimension(PREF_W, PREF_H);
private void createShadowPicture(BufferedImage image) { int width = image.getWidth(); int height = image.getHeight(); int extra = 0; if (System.getProperty("os.name").equalsIgnoreCase("Windows XP")) { extra = 14; // Only create shadow if Windows XP (avoids double shadow in Mac OS; not tested for other OSes) } setSize(new Dimension(width + extra, height + extra)); setLocationRelativeTo(null); Rectangle windowRect = getBounds(); splash = new BufferedImage(width + extra, height + extra, BufferedImage.TYPE_INT_ARGB); Graphics2D g2 = (Graphics2D) splash.getGraphics(); try { Robot robot = new Robot(getGraphicsConfiguration().getDevice()); BufferedImage capture = robot.createScreenCapture(new Rectangle(windowRect.x, windowRect.y, windowRect.width + extra, windowRect.height + extra)); g2.drawImage(capture, null, 0, 0); } catch (AWTException e) { } BufferedImage shadow = new BufferedImage(width + extra, height + extra, BufferedImage.TYPE_INT_ARGB); Graphics g = shadow.getGraphics(); g.setColor(new Color(0.0f, 0.0f, 0.0f, 0.3f)); g.fillRoundRect(6, 6, width, height, 12, 12); g2.drawImage(shadow, getBlurOp(7), 0, 0); g2.drawImage(image, 0, 0, this); }
this.setPreferredSize(new Dimension(SIZE, SIZE)); this.n = n; super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g2d.setColor(Color.black); a = getWidth() / 2; b = getHeight() / 2; r = 4 * m / 5; int r2 = Math.abs(m - r) / 2; g2d.drawOval(a - r, b - r, 2 * r, 2 * r); g2d.setColor(Color.blue); for (int i = 0; i < n; i++) { double t = 2 * Math.PI * i / n; int x = (int) Math.round(a + r * Math.cos(t)); int y = (int) Math.round(b + r * Math.sin(t)); g2d.fillOval(x - r2, y - r2, 2 * r2, 2 * r2); JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new CircleTest(9)); f.pack(); f.setVisible(true);