Path: blob/master/src/demo/share/jfc/J2Ddemo/java2d/demos/Composite/ACimages.java
41175 views
/*1*2* Copyright (c) 2007, 2018, Oracle and/or its affiliates. All rights reserved.3*4* Redistribution and use in source and binary forms, with or without5* modification, are permitted provided that the following conditions6* are met:7*8* - Redistributions of source code must retain the above copyright9* notice, this list of conditions and the following disclaimer.10*11* - Redistributions in binary form must reproduce the above copyright12* notice, this list of conditions and the following disclaimer in the13* documentation and/or other materials provided with the distribution.14*15* - Neither the name of Oracle nor the names of its16* contributors may be used to endorse or promote products derived17* from this software without specific prior written permission.18*19* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS20* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,21* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR22* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR23* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,24* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,25* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR26* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF27* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING28* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS29* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.30*/31package java2d.demos.Composite;323334import static java.awt.Color.BLACK;35import static java.awt.Color.BLUE;36import static java.awt.Color.CYAN;37import static java.awt.Color.GREEN;38import static java.awt.Color.LIGHT_GRAY;39import static java.awt.Color.MAGENTA;40import static java.awt.Color.ORANGE;41import static java.awt.Color.PINK;42import static java.awt.Color.RED;43import static java.awt.Color.WHITE;44import static java.awt.Color.YELLOW;45import java.awt.AlphaComposite;46import java.awt.Color;47import java.awt.Graphics2D;48import java.awt.Image;49import java.awt.Shape;50import java.awt.font.TextLayout;51import java.awt.geom.Ellipse2D;52import java.awt.geom.Rectangle2D;53import java.awt.geom.RoundRectangle2D;54import java2d.Surface;555657/**58* Compositing shapes on images.59*/60@SuppressWarnings("serial")61public class ACimages extends Surface {6263private static final String[] s = { "box", "fight", "magnify",64"boxwave", "globe", "snooze",65"tip", "thumbsup", "dukeplug" };66private static Image[] imgs = new Image[s.length];67private static Color[] colors = { BLUE, CYAN, GREEN,68MAGENTA, ORANGE, PINK, RED, YELLOW, LIGHT_GRAY };6970public ACimages() {71setBackground(WHITE);72for (int i = 0; i < imgs.length; i++) {73imgs[i] = getImage(s[i] + ".png");74}75}7677@Override78public void render(int w, int h, Graphics2D g2) {7980float alpha = 0.0f;81int iw = w / 3;82int ih = (h - 45) / 3;83float xx = 0, yy = 15;8485for (int i = 0; i < imgs.length; i++) {8687xx = (i % 3 == 0) ? 0 : xx + w / 3;88switch (i) {89case 3:90yy = h / 3 + 15;91break;92case 6:93yy = h / 3 * 2 + 15;94}9596g2.setComposite(AlphaComposite.SrcOver);97g2.setColor(BLACK);98AlphaComposite ac = AlphaComposite.SrcOver.derive(alpha += .1f);99String str = "a=" + Float.toString(alpha).substring(0, 3);100new TextLayout(str, g2.getFont(), g2.getFontRenderContext()).draw(g2, xx101+ 3, yy - 2);102103Shape shape = null;104105switch (i % 3) {106case 0:107shape = new Ellipse2D.Float(xx, yy, iw, ih);108break;109case 1:110shape = new RoundRectangle2D.Float(xx, yy, iw, ih, 25, 25);111break;112case 2:113shape = new Rectangle2D.Float(xx, yy, iw, ih);114break;115}116g2.setColor(colors[i]);117g2.setComposite(ac);118g2.fill(shape);119g2.drawImage(imgs[i], (int) xx, (int) yy, iw, ih, null);120}121}122123public static void main(String[] s) {124createDemoFrame(new ACimages());125}126}127128129