16.18.6 渐变方框与文字 Cyclic GradientPaint

本文介绍了如何使用Java编程语言创建一个渐变面板,并通过Java的绘图API实现颜色渐变效果,包括设置起点和终点的颜色,填充矩形区域以及绘制线条。演示了如何结合FontMetrics类来调整文字的位置和样式。
摘要由CSDN通过智能技术生成

 

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Point2D.Float;
import java.awt.geom.Rectangle2D;

import javax.swing.JComponent;
import javax.swing.JFrame;


public class GradientPane extends JComponent{
	public void paint(Graphics g){
		Graphics2D g2d = (Graphics2D) g;
		Point2D.Float p1 = new Point2D.Float(150.f,75.f);//起点坐标
		Point2D.Float p2 = new Point2D.Float(250.f,75.f);
		float width = 300;
		float height = 50;
		GradientPaint g1 = new GradientPaint(p1,Color.green,p2,Color.black,true);
		
		Rectangle2D.Float rect1 = new Rectangle2D.Float(p1.x - 100,p1.y -25,width,height);
		g2d.setPaint(g1);//它是从150处开始绿色,正好是窗口的x/2:中心
		g2d.fill(rect1);//画方:从150-100=50处开始,宽300,高50
		
		g2d.setPaint(Color.PINK);
		g2d.draw(rect1);
		g2d.draw(new Line2D.Float(p1,p2));
		//p1 - 此线段的起始 Point2D   p2 - 此线段的结束 Point2D
		
		Font font = new Font("Dialog", Font.BOLD ,40);
		//FontMetrics 类定义字体规格对象,该对象封装将在特定屏幕上呈现特定字体的有关信息。
		FontMetrics fontMetrics = getFontMetrics(font);//metrics:度量、指标
		GradientPaint g2 = new GradientPaint(150.f,280.f,Color.blue,fontMetrics.stringWidth("Hello"),
				fontMetrics.getHeight(),Color.red);
		// 创建一个新 FontMetrics 对象,用于查找该 Font 中关于指定 Font 和特定字符字形的 height 和 width 信息。
		g2d.setFont(font);
		g2d.setPaint(g2);
		g2d.drawString("Hello", 150, 150);
	}

	public static void main(String[] args) {
		JFrame window = new JFrame("Cyclic Gradient Paint");
	    window.setBounds(30, 30, 300, 300);
	    window.getContentPane().add(new GradientPane());
	    window.setVisible(true);
	}

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值