1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
package assAdapterV02;
import java.awt.*;
import java.awt.font.FontRenderContext;
import java.awt.font.GlyphVector;
import java.awt.font.LineMetrics;
import java.awt.geom.AffineTransform;
import java.awt.geom.Area;
import java.awt.image.BufferedImage;
import java.awt.image.Raster;
public class Testgu {
protected static void setQualityGraphics(Graphics2D gr2D) {
gr2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
gr2D.setRenderingHint(RenderingHints.KEY_RENDERING,
RenderingHints.VALUE_RENDER_QUALITY);
gr2D.setRenderingHint(RenderingHints.KEY_ALPHA_INTERPOLATION,
RenderingHints.VALUE_ALPHA_INTERPOLATION_QUALITY);
gr2D.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
RenderingHints.VALUE_INTERPOLATION_BICUBIC);
}
/**
* @param args
*/
public static void main(String[] args) {
String font = "Electrik";
int fontSize = 24;
int fontType = Font.BOLD;
int width = 640;
int height = 60;
int border = 2;
Font myFont = new Font(font, fontType, fontSize);
String myString = "My Sweet Home";
BufferedImage tmpBIm = new BufferedImage(width, height,
BufferedImage.TYPE_INT_ARGB);
Graphics2D tmpGraphics2D = tmpBIm.createGraphics();
setQualityGraphics(tmpGraphics2D);
FontRenderContext tmpFRC = tmpGraphics2D.getFontRenderContext();
int flag = Font.LAYOUT_LEFT_TO_RIGHT | Font.LAYOUT_NO_START_CONTEXT
| Font.LAYOUT_NO_LIMIT_CONTEXT;
GlyphVector glv = myFont.layoutGlyphVector(tmpFRC, myString
.toCharArray(), 0, myString.length(), flag);
LineMetrics lineMet = myFont.getLineMetrics(myString, tmpFRC);
float textMaxHeight = lineMet.getAscent() + lineMet.getDescent();
AffineTransform tmpAFT = new AffineTransform();
double tx, ty;
tx = (width - glv.getVisualBounds().getWidth()) / 2.0;
ty = (height - textMaxHeight) / 2.0 + lineMet.getAscent();
tmpAFT.setToTranslation(tx, ty);
// Définition des shapes
Shape shapeIntern = tmpAFT.createTransformedShape(glv.getOutline());
Stroke tmpStroke;
tmpStroke = new BasicStroke(border, BasicStroke.CAP_ROUND,
BasicStroke.JOIN_ROUND);
Shape shapeExtern = tmpStroke.createStrokedShape(shapeIntern);
Area startShape = new Area(shapeIntern);
System.out.println("xxx");
Area tmpJK;
tmpJK = new Area(shapeExtern);
System.out.println("yyy");
startShape.add(tmpJK);
System.out.println("zzz");
}
} |