zoukankan      html  css  js  c++  java
  • Java基础 awt Font 四种字体样式

    •     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的配置、监控与优化,比较实用,值得学习。

  • 相关阅读:
    redis hash结构如何设置过期时间
    C# 激活主窗口
    C# 发送消息SendKeys、SendMessage、keybd_event的用法
    【总结】清除webbrowser cookie/session的6种方法
    清除webBrowser 缓存和Cookie的解决方案
    完美解决C#Webbrowser控件设置Cookie问题
    WebBrowser脚本错误的完美解决方案
    c# 控制IE浏览器
    法嵌入互操作类型“SHDocVw.ShellWindowsClass”请改用适用的接口-解决方法
    C# 总结const、 readonly、 static三者区别:
  • 原文地址:https://www.cnblogs.com/jizuiku/p/11110217.html
Copyright © 2011-2022 走看看