Color Font - 使用颜色和字体
来源: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();
- import java.awt.*;
- import java.awt.font.*;
- import java.awt.geom.*;
- import javax.swing.*;
- public class ColorAndFont {
- public static void main(String[] args) {
- EventQueue.invokeLater(new Runnable(){
- public void run() {
- CFFrame f=new CFFrame();
- }
- });
- }
- }
- class CFFrame extends JFrame{
- CFFrame(){
- setLocationByPlatform(true);
- setTitle("color and font test");
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- getContentPane().add(new CFComponent());
- pack();
- setVisible(true);
- }
- }
- class CFComponent extends JComponent{
- private static final int DEFAULT_W=800;
- private static final int DEFAULT_H=800;
- CFComponent(){
- setPreferredSize(new Dimension(DEFAULT_W,DEFAULT_H));
- setForeground(Color.CYAN);
- }
- public void paintComponent(Graphics g){
- Graphics2D g2d=(Graphics2D)g;
- Line2D line=new Line2D.Double(0,0,100,100);
- g2d.draw(line);//使用了默认前景色CYAN
- Color c2=new Color(128,0,255);//Color.RED;//brighter方法对预定义的13种颜色效果不好,也许是因为到颜色的值是极值
- Color c1=c2.darker();
- Color c3=c2.brighter();
- Rectangle2D rect1=new Rectangle2D.Double(100,100,200,200);
- Rectangle2D rect2=new Rectangle2D.Double(100,300,200,200);
- Rectangle2D rect3=new Rectangle2D.Double(100,500,200,200);
- g2d.setColor(c1);
- g2d.draw(rect1);
- g2d.fill(rect1);
- g2d.setColor(c2);
- g2d.draw(rect2);
- g2d.fill(rect2);
- g2d.setColor(c3);
- g2d.draw(rect3);
- g2d.fill(rect3);
- //============================
- g2d.setColor(Color.RED);
- g2d.drawString("qtyipdfghjklb", 100, 100);//100,100是rect1的左上角的点,但是绘制结果字符串不在矩形内,而在矩形上,说明了字符串的纵坐标是按照基线来设置的。
- Font myFont=new Font("SansSerif",Font.BOLD,14);
- setFont(myFont);
- g2d.drawString("中午\tnoon", 200, 200);
- //repaint();
- setFont(new Font("Serif",Font.BOLD,24));//字体覆盖了之前的设置。
- g2d.drawString("中午\tnoon", 200, 230);
- //============================
- String msg="practise";
- myFont=new Font("SansSerif",Font.PLAIN,36);
- setFont(myFont);
- g2d.drawString(msg, 300, 300);
- FontRenderContext context=g2d.getFontRenderContext();//屏幕设备字体属性对象
- Rectangle2D msgBound=myFont.getStringBounds(msg, context);//得到的矩形不能直接用于绘图,其x,y是相对于基线的,x=0,y=-ascend
- g2d.draw(msgBound);
- double msgW=msgBound.getWidth();//文本宽度
- double msgH=msgBound.getHeight();//文本高度
- double ascent=-msgBound.getY();//文本上坡度
- LineMetrics metrics=myFont.getLineMetrics(msg, context);
- float descent=metrics.getDescent();//文本下坡度
- float leading=metrics.getLeading();//文本行距
- g2d.setPaint(Color.BLUE);
- Rectangle2D msgRect=new Rectangle2D.Double(300,300-ascent,msgW,msgH);//包围文本的矩形
- g2d.draw(msgRect);
- g2d.setPaint(Color.MAGENTA);
- g2d.draw(new Line2D.Double(300,300,300+msgW,300));//文本的基线
- g2d.setPaint(Color.ORANGE);
- g2d.draw(new Line2D.Double(300,300+descent,300+msgW,300+descent));//文本下坡度的下沿
- g2d.setPaint(Color.GREEN);
- g2d.draw(new Line2D.Double(300,300+descent+leading,300+msgW,300+descent+leading));//文本行距的下沿
- }
- }
Color Font - 使用颜色和字体相关推荐
- css的font修改颜色,css的font字体颜色如何设置
css的font字体颜色设置方法:1.直接在标签上使用"color:颜色"设置字体颜色:2.通过给font标签添加class属性,在css标签中通过该class设置字体颜色. 本教 ...
- R语言text函数在R原生可视化结果中添加文本标签、内容:指定文本显示的位置、颜色、字体大小等(Position、Change Color 、 Size of Text)
R语言text函数在R原生可视化结果中添加文本标签.内容:指定文本显示的位置.颜色.字体大小等(Position.Change Color . Size of Text) 目录
- html css超链接字体颜色,css 字体颜色(css color)
DIV CSS 字体颜色\css color知识实例讲解 在DIV+CSS网页中控制字体颜色的CSS单词为color:+颜色值.这里DIVCSS5详细为大家介绍CSS 字体颜色color的运用(div ...
- HTML添加style修改颜色,css字体颜色设置教程(CSS color)
CSS颜色样式篇目录认识CSS 颜色(color) 网页颜色基础 两种方法设置对象颜色样式 文字颜色控制color 网页背景颜色color 边框颜色color 网页color RGB设置 网页colo ...
- android textview改变部分文字的颜色和string.xml中文字的替换及部分内容设置颜色、字体、超链接、图片...
一:TextView组件改变部分文字的颜色: 1.TextView textView = (TextView)findViewById(R.id.textview); 2. 3.//方法一: 4.te ...
- Eclipse 答疑:Eclipse 如何更换夜间及外部主题?如何修改代码样式、背景颜色、字体大小?为何注释文字大小不一?
文章目录 前言 一.更换 Eclipse 自带黑色"Dark"主题 二.设修改代码的样式及背景颜色 三.设置代码字体和大小(解决注释字体不一原因) 四.下载外部主题进行更换 4.1 ...
- android graphics2d,Graphics2D的drawString之不带颜色的字体
工作,我想显示在挥杆对象(JLabel的,等等),表情符号,所以为了做到这一点我使用this library及以下类,使表情符号,显示只是Graphics2D的drawString之不带颜色的字体 j ...
- Java——文本框设置背景颜色、字体样式和颜色
┏(ω)=☞ 本专栏的目录(为您提供更好的查询方式)(点这里说不定有你想要的) 字体风格一共有四种,分别是 Font.PLAIN(普通) Font.BOLD(加粗) Font.ITALIC(斜体) F ...
- html字体颜色 html中设置字体颜色代码 字体颜色获取
html字体颜色 html中设置字体颜色代码 字体颜色获取 html字体颜色设置更改,html设置字体颜色代码方法有哪些 DIVCSS5为大家介绍在html中设置字体颜色方法,字体颜色修改方法,字体颜 ...
最新文章
- 【项目展示】一个有点难度的猜数字小游戏(Java编写)
- 灰度图像归一化到0~255(对比度拉伸)的OpenCV代码实现
- 【译】Go语言声明语法
- GTK在Windows下开发和运行的一些设置问题
- 实验吧逆向catalyst-system——WP
- 计算机基础理论知识的论文,计算机基础毕业论文
- 强化学习——From drew追寻Mitsuha的学习笔记
- 虚拟存储器的基本概念
- shell脚本之批量删除文件
- 这是一个没有标题的故事
- Python-有趣的freegames
- android自定义控件padding属性无效的解决
- unity | 一次鼠标点击,触发两次?
- 量子计算与区块链抗量子算法
- 2021年新版CDA LEVELⅠ 模拟题(二)
- 【Proteus仿真】51单片机在线版电子锁案例
- python爬虫项目之携程网、大众点评和马蜂窝贵州景点差评实战汇总
- 励志必看-------没有伞的孩子必须努力奔跑!
- 给大家分享一款非常漂亮的博客
- connection closed gracefully问题