来源:http://blog.csdn.net/rexih/article/details/46453527

Color & Font都是java.awt.*;下的类

颜色:

1.Color类预定义的13种颜色

Color.BLACK

Color.BLUE

Color.CYAN

Color.DARK_GRAY

Color.GRAY

Color.GREEN

Color.LIGHT_GRAY

Color.MAGENTA

Color.ORANGE

Color.PINK

Color.RED

Color.WHITE

Color.YELLOW

2.通过构造函数创建颜色对象

Color(int r,intg,int b)//rgb是0-255的int值,e.g.

Color c=new Color(128,0,255);

3.使颜色对象变亮/暗

c.brighter();/c.darker();

效果不是特别明显,需要连续调用才能达到耀眼的效果:

c.brighter().brighter().brighter();

brighter方法对预定义的13种颜色效果不好,也许是因为到颜色的值是极值

设置颜色:

1.设置之后绘制的图形都使用的颜色 Graphics2D

setPaint(Color c)

2.填充封闭图形的颜色,用fill替代draw Graphics2D

fill(Shape s)

3.设置组件的背景色 Component

setBackground(Color c)

4.设置组件默认前景色 Component

setForeground(Color c)

字体

AWT定义的五个逻辑字体名

SansSerif //无衬线字体(黑体)
Serif //有衬线字体(宋体)
Monospaced //等宽字体
Dialog //对话框字体
DialogInput //对话框输入字体

字体风格:

Font.PLAIN

Font.BOLD

Font.ITALIC

Font.BOLD+Font.ITALIC

获取系统可用字体的字符串数组

1.获取描述用户系统图形环境的对象

GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();

2.通过此对象获取系统所有可用字体家族名的字符串数组

String[] fontnames=ge.getAvailableFontFamilyNames();

创建字体对象

1.通过构造函数创建一个字体对象

Font myFont=new Font("SansSerif",Font.ITALIC,14);

2.载入一个TrueType字体或者Type 1字体,使用静态方法createFont()。

参数1是int类型指示字体类型是TrueType字体或者Type 1字体:Font.TRUETYPE_FONT/Font.TYPE1_FONT

参数2是字体载入源

static FontcreateFont(int fontFormat, File fontFile) 
          返回一个使用指定字体类型和指定字体文件的新 Font。
static Font  createFont(int fontFormat, InputStream fontStream) 
          返回一个使用指定字体类型和输入数据的新 Font。

通过createFont()载入的字体默认是PLAIN风格,字体大小为1

需要调整属性则在创建后使用derive方法,这是重载的方法,参数为float时表示大小,int时表示风格

myFont.derive(float size);

myFont.derive(int style);

myFont.derive(int style,float size)

=====

自定义字体的创建未完待续

使用字体:

设置后绘制的文本都使用此字体 Graphics2D:

setFont(Font f)

setFont()方法多次使用,不论代码顺序,显示的文本的字体都是以最后一次setFont设置的字体显示,即使drawString语句在最后一次setFont语句之前。

获取使用某种字体的文本的相关位置和大小属性:

1.获取屏幕设备字体属性的描述对象Graphics2D:(render是渲染的意思)

返回这个图形文本中,指定字体特征的字体绘制环境:通常在使用前此组件的Graphics2D对象已经使用了setFont(),所以此方法返回的是指定为setFont设置的字体的绘制环境

FontRenderContext context=g2d.getFontRenderContext();//FontRenderContext位于java.awt.font.*;

2.获取包围使用某种字体的文本的矩形对象Font:

Rectangle2D rectBounds=myFont.getStringBounds(msg,context);

3.获取使用某种字体的文本的宽高上坡度

double msgW=rectBounds.getWidth();

double msgH=rectBounds.getHeight();

double ascent=-rectBounds.getY();//获取到的包围文本的矩形的x,y坐标是相对的,x=0,y=-ascent。

4.获取使用某种字体的文本的下坡度和行距

LineMetrics是测定字符串宽度的线性metrics对象,除了能获取下坡度和行距,还可以获取上坡度和总高度,返回值都是float单精度

LineMetrics metrics=myFont.getLineMetrics(msg,context);

float descent=metrics.getDescent();

float leading=metrics.getLeading();

float ascent=metrics.getAscent();

float msgH=metrics.getHeight();

[java]  view plain copy
  1. import java.awt.*;
  2. import java.awt.font.*;
  3. import java.awt.geom.*;
  4. import javax.swing.*;
  5. public class ColorAndFont {
  6. public static void main(String[] args) {
  7. EventQueue.invokeLater(new Runnable(){
  8. public void run() {
  9. CFFrame f=new CFFrame();
  10. }
  11. });
  12. }
  13. }
  14. class CFFrame extends JFrame{
  15. CFFrame(){
  16. setLocationByPlatform(true);
  17. setTitle("color and font test");
  18. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  19. getContentPane().add(new CFComponent());
  20. pack();
  21. setVisible(true);
  22. }
  23. }
  24. class CFComponent extends JComponent{
  25. private static final int DEFAULT_W=800;
  26. private static final int DEFAULT_H=800;
  27. CFComponent(){
  28. setPreferredSize(new Dimension(DEFAULT_W,DEFAULT_H));
  29. setForeground(Color.CYAN);
  30. }
  31. public void paintComponent(Graphics g){
  32. Graphics2D g2d=(Graphics2D)g;
  33. Line2D line=new Line2D.Double(0,0,100,100);
  34. g2d.draw(line);//使用了默认前景色CYAN
  35. Color c2=new Color(128,0,255);//Color.RED;//brighter方法对预定义的13种颜色效果不好,也许是因为到颜色的值是极值
  36. Color c1=c2.darker();
  37. Color c3=c2.brighter();
  38. Rectangle2D rect1=new Rectangle2D.Double(100,100,200,200);
  39. Rectangle2D rect2=new Rectangle2D.Double(100,300,200,200);
  40. Rectangle2D rect3=new Rectangle2D.Double(100,500,200,200);
  41. g2d.setColor(c1);
  42. g2d.draw(rect1);
  43. g2d.fill(rect1);
  44. g2d.setColor(c2);
  45. g2d.draw(rect2);
  46. g2d.fill(rect2);
  47. g2d.setColor(c3);
  48. g2d.draw(rect3);
  49. g2d.fill(rect3);
  50. //============================
  51. g2d.setColor(Color.RED);
  52. g2d.drawString("qtyipdfghjklb", 100, 100);//100,100是rect1的左上角的点,但是绘制结果字符串不在矩形内,而在矩形上,说明了字符串的纵坐标是按照基线来设置的。
  53. Font myFont=new Font("SansSerif",Font.BOLD,14);
  54. setFont(myFont);
  55. g2d.drawString("中午\tnoon", 200, 200);
  56. //repaint();
  57. setFont(new Font("Serif",Font.BOLD,24));//字体覆盖了之前的设置。
  58. g2d.drawString("中午\tnoon", 200, 230);
  59. //============================
  60. String msg="practise";
  61. myFont=new Font("SansSerif",Font.PLAIN,36);
  62. setFont(myFont);
  63. g2d.drawString(msg, 300, 300);
  64. FontRenderContext context=g2d.getFontRenderContext();//屏幕设备字体属性对象
  65. Rectangle2D msgBound=myFont.getStringBounds(msg, context);//得到的矩形不能直接用于绘图,其x,y是相对于基线的,x=0,y=-ascend
  66. g2d.draw(msgBound);
  67. double msgW=msgBound.getWidth();//文本宽度
  68. double msgH=msgBound.getHeight();//文本高度
  69. double ascent=-msgBound.getY();//文本上坡度
  70. LineMetrics metrics=myFont.getLineMetrics(msg, context);
  71. float descent=metrics.getDescent();//文本下坡度
  72. float leading=metrics.getLeading();//文本行距
  73. g2d.setPaint(Color.BLUE);
  74. Rectangle2D msgRect=new Rectangle2D.Double(300,300-ascent,msgW,msgH);//包围文本的矩形
  75. g2d.draw(msgRect);
  76. g2d.setPaint(Color.MAGENTA);
  77. g2d.draw(new Line2D.Double(300,300,300+msgW,300));//文本的基线
  78. g2d.setPaint(Color.ORANGE);
  79. g2d.draw(new Line2D.Double(300,300+descent,300+msgW,300+descent));//文本下坡度的下沿
  80. g2d.setPaint(Color.GREEN);
  81. g2d.draw(new Line2D.Double(300,300+descent+leading,300+msgW,300+descent+leading));//文本行距的下沿
  82. }
  83. }

Color Font - 使用颜色和字体相关推荐

  1. css的font修改颜色,css的font字体颜色如何设置

    css的font字体颜色设置方法:1.直接在标签上使用"color:颜色"设置字体颜色:2.通过给font标签添加class属性,在css标签中通过该class设置字体颜色. 本教 ...

  2. R语言text函数在R原生可视化结果中添加文本标签、内容:指定文本显示的位置、颜色、字体大小等(Position、Change Color 、 Size of Text)

    R语言text函数在R原生可视化结果中添加文本标签.内容:指定文本显示的位置.颜色.字体大小等(Position.Change Color . Size of Text) 目录

  3. html css超链接字体颜色,css 字体颜色(css color)

    DIV CSS 字体颜色\css color知识实例讲解 在DIV+CSS网页中控制字体颜色的CSS单词为color:+颜色值.这里DIVCSS5详细为大家介绍CSS 字体颜色color的运用(div ...

  4. HTML添加style修改颜色,css字体颜色设置教程(CSS color)

    CSS颜色样式篇目录认识CSS 颜色(color) 网页颜色基础 两种方法设置对象颜色样式 文字颜色控制color 网页背景颜色color 边框颜色color 网页color RGB设置 网页colo ...

  5. android textview改变部分文字的颜色和string.xml中文字的替换及部分内容设置颜色、字体、超链接、图片...

    一:TextView组件改变部分文字的颜色: 1.TextView textView = (TextView)findViewById(R.id.textview); 2. 3.//方法一: 4.te ...

  6. Eclipse 答疑:Eclipse 如何更换夜间及外部主题?如何修改代码样式、背景颜色、字体大小?为何注释文字大小不一?

    文章目录 前言 一.更换 Eclipse 自带黑色"Dark"主题 二.设修改代码的样式及背景颜色 三.设置代码字体和大小(解决注释字体不一原因) 四.下载外部主题进行更换 4.1 ...

  7. android graphics2d,Graphics2D的drawString之不带颜色的字体

    工作,我想显示在挥杆对象(JLabel的,等等),表情符号,所以为了做到这一点我使用this library及以下类,使表情符号,显示只是Graphics2D的drawString之不带颜色的字体 j ...

  8. Java——文本框设置背景颜色、字体样式和颜色

    ┏(ω)=☞ 本专栏的目录(为您提供更好的查询方式)(点这里说不定有你想要的) 字体风格一共有四种,分别是 Font.PLAIN(普通) Font.BOLD(加粗) Font.ITALIC(斜体) F ...

  9. html字体颜色 html中设置字体颜色代码 字体颜色获取

    html字体颜色 html中设置字体颜色代码 字体颜色获取 html字体颜色设置更改,html设置字体颜色代码方法有哪些 DIVCSS5为大家介绍在html中设置字体颜色方法,字体颜色修改方法,字体颜 ...

最新文章

  1. 【项目展示】一个有点难度的猜数字小游戏(Java编写)
  2. 灰度图像归一化到0~255(对比度拉伸)的OpenCV代码实现
  3. 【译】Go语言声明语法
  4. GTK在Windows下开发和运行的一些设置问题
  5. 实验吧逆向catalyst-system——WP
  6. 计算机基础理论知识的论文,计算机基础毕业论文
  7. 强化学习——From drew追寻Mitsuha的学习笔记
  8. 虚拟存储器的基本概念
  9. shell脚本之批量删除文件
  10. 这是一个没有标题的故事
  11. Python-有趣的freegames
  12. android自定义控件padding属性无效的解决
  13. unity | 一次鼠标点击,触发两次?
  14. 量子计算与区块链抗量子算法
  15. 2021年新版CDA LEVELⅠ 模拟题(二)
  16. 【Proteus仿真】51单片机在线版电子锁案例
  17. python爬虫项目之携程网、大众点评和马蜂窝贵州景点差评实战汇总
  18. 励志必看-------没有伞的孩子必须努力奔跑!
  19. 给大家分享一款非常漂亮的博客
  20. connection closed gracefully问题

热门文章

  1. C语言自制樱花树代码
  2. matlab vpi函数记录
  3. 外贸综合型企业解决方案丨汇信外贸软件
  4. ubuntu-关机时黑屏左上角只有一个横着的光标一直闪烁长时间无法关机
  5. 记录repast4py的前两个example——rndWalker和Rumer Agent
  6. Spring AOP 切入点表达式
  7. rust开发环境_Rust开发环境搭建
  8. 总结黄铅笔奖中国第一人的20年营销经验
  9. 【skill】收缩表段(shrink space)
  10. 魔百盒M301H(ZN、JL、CW、SM代工)_海思3798mv300_全套刷机固件