- JDK :OpenJDK-11
- OS :CentOS 7.6.1810
- IDE :Eclipse 2019‑03
- typesetting :Markdown
code
package per.jizuiku.gui;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
/**
* @author 给最苦
* @date 2019/06/30
* @blog www.cnblogs.com/jizuiku
*/
public class Demo {
/**
* @param args
*/
public static void main(String[] args) {
try {
getImage(0);
getImage(1);
// style=2,本应该是斜体效果。可是通过生成的图片却看不出来
getImage(2);
getImage(3);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* @param fontStyle
*/
public static void getImage(int fontStyle) throws FileNotFoundException, IOException {
// 得到图片缓冲区
int width = 100;
int height = 50;
int imageType = BufferedImage.TYPE_INT_BGR;
BufferedImage myImage = new BufferedImage(width, height, imageType);
// 得到画笔
Graphics2D pen = (Graphics2D)myImage.getGraphics();
// 设置笔的颜色,即背景色
pen.setColor(Color.WHITE);
// 画出一个矩形
// 坐标x 坐标y 宽度100 长度50
pen.fillRect(0, 0, 100, 50);
// Mononspace 大小25
Font font = new Font("Mononspace", fontStyle, 25);
pen.setFont(font);
// 字的颜色 和 背景的颜色 要不同的
// 第一次没有注意到,结果 运行了三四次 都发现没有字呀
pen.setColor(Color.blue);
// 写字
pen.drawString("abcd", 20, 35);
ImageIO.write(myImage, "JPEG", new FileOutputStream(fontStyle + ".jpg"));
}
}
result
fontStyle_0
ffontStyle_1
fontStyle_2
fontStyle_3
sourceCode
/**
* The plain style constant.
*/
public static final int PLAIN = 0;
/**
* The bold style constant. This can be combined with the other style
* constants (except PLAIN) for mixed styles.
*/
public static final int BOLD = 1;
/**
* The italicized style constant. This can be combined with the other
* style constants (except PLAIN) for mixed styles.
*/
public static final int ITALIC = 2;
/**
* Creates a new {@code Font} from the specified name, style and
* point size.
* <p>
* The font name can be a font face name or a font family name.
* It is used together with the style to find an appropriate font face.
* When a font family name is specified, the style argument is used to
* select the most appropriate face from the family. When a font face
* name is specified, the face's style and the style argument are
* merged to locate the best matching font from the same family.
* For example if face name "Arial Bold" is specified with style
* {@code Font.ITALIC}, the font system looks for a face in the
* "Arial" family that is bold and italic, and may associate the font
* instance with the physical font face "Arial Bold Italic".
* The style argument is merged with the specified face's style, not
* added or subtracted.
* This means, specifying a bold face and a bold style does not
* double-embolden the font, and specifying a bold face and a plain
* style does not lighten the font.
* <p>
* If no face for the requested style can be found, the font system
* may apply algorithmic styling to achieve the desired style.
* For example, if {@code ITALIC} is requested, but no italic
* face is available, glyphs from the plain face may be algorithmically
* obliqued (slanted).
* <p>
* Font name lookup is case insensitive, using the case folding
* rules of the US locale.
* <p>
* If the {@code name} parameter represents something other than a
* logical font, i.e. is interpreted as a physical font face or family, and
* this cannot be mapped by the implementation to a physical font or a
* compatible alternative, then the font system will map the Font
* instance to "Dialog", such that for example, the family as reported
* by {@link #getFamily() getFamily} will be "Dialog".
*
* @param name the font name. This can be a font face name or a font
* family name, and may represent either a logical font or a physical
* font found in this {@code GraphicsEnvironment}.
* The family names for logical fonts are: Dialog, DialogInput,
* Monospaced, Serif, or SansSerif. Pre-defined String constants exist
* for all of these names, for example, {@code DIALOG}. If {@code name} is
* {@code null}, the <em>logical font name</em> of the new
* {@code Font} as returned by {@code getName()} is set to
* the name "Default".
* @param style the style constant for the {@code Font}
* The style argument is an integer bitmask that may
* be {@code PLAIN}, or a bitwise union of {@code BOLD} and/or
* {@code ITALIC} (for example, {@code ITALIC} or {@code BOLD|ITALIC}).
* If the style argument does not conform to one of the expected
* integer bitmasks then the style is set to {@code PLAIN}.
* @param size the point size of the {@code Font}
* @see GraphicsEnvironment#getAllFonts
* @see GraphicsEnvironment#getAvailableFontFamilyNames
* @since 1.0
*/
public Font(String name, int style, int size) {
this.name = (name != null) ? name : "Default";
this.style = (style & ~0x03) == 0 ? style : 0;
this.size = size;
this.pointSize = size;
}
resource
- [ JDK ] openjdk.java.net
- [ doc - 参考 ] docs.oracle.com/en/java/javase/11
- [ 规范 - 推荐 ] yq.aliyun.com/articles/69327
- [ 规范 - 推荐 ] google.github.io/styleguide
- [ 源码 ] hg.openjdk.java.net
- [ OS ] www.centos.org
- [ IDE ] www.eclipse.org/downloads/packages
- [ 平台 ] www.cnblogs.com
感谢帮助过 给最苦 的人们。
Java、Groovy和Scala等基于JVM的语言,优秀,值得学习。
规范的命名和代码格式等,有助于沟通和理解。
JVM的配置、监控与优化,比较实用,值得学习。