代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
一个相对复杂而又步骤清晰的示例代码
作者:
Dezai.CN
/ 发布于
2011/12/1
/
689
<div> public class MyTest extends JPanel { static final int WIDTH = 800, HEIGHT = 375; public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING , RenderingHints.VALUE_ANTIALIAS_ON); // 1. 通过渐变绘制整个背景--一个从左上角到右下角的渐变 g2.setPaint(new GradientPaint(0, 0, new Color(150, 0, 0) , WIDTH, HEIGHT, new Color(200, 200, 255))); g.fillRect(0, 0, WIDTH, HEIGHT); // 2. 用渐变绘制宽度为15的边框--这里的渐变是通过Alpha值的变化体现出来的。 g2.setPaint(new GradientPaint(0, 0, new Color(0, 150, 0), 20, 20 , new Color(0, 150, 0, 0), true)); g2.setStroke(new BasicStroke(15)); g2.drawRect(25, 25, WIDTH - 50, HEIGHT - 50); // 3. 基于Font对象绘制字符,为了显示方便我们需要一个放大的Font Font font = new Font("Serif", Font.BOLD, 10); // a basic font Font bigfont = font.deriveFont(AffineTransform.getScaleInstance(30.0, 30.0)); // 4. 基于这个放大的大字体(bigFont)和Graphics2D的字体渲染上下文, // 将字符串"JAV"分解,再基于每个字符的outline生成Shape对象,这样, // Graphics2D就可以想渲染普通形状一样渲染字体信息了。 GlyphVector gv = bigfont.createGlyphVector(g2.getFontRenderContext(), "JAV"); // 5. jshape 对应 J,ashape 对应 A,vshape 对应 V Shape jshape = gv.getGlyphOutline(0); Shape ashape = gv.getGlyphOutline(1); Shape vshape = gv.getGlyphOutline(2); // 6. 将字体阴影的颜色设置为半透的黑色 g2.setStroke(new BasicStroke(5.0f)); Paint shadowPaint = new Color(0, 0, 0, 100); // 7. 阴影的光线是斜射的,因此这里需要做切变变化来模拟,再将阴影的Height缩小一倍。 AffineTransform shadowTransform = AffineTransform.getShearInstance(-1.0, 0.0); shadowTransform.scale(1.0, 0.5); g2.translate(65, 270); // 8. 设置阴影的背景色 g2.setPaint(shadowPaint); // 9. 调整阴影的绘制坐标,使他比原始图形的BASELINE下降一点儿来模拟投影的效果。 g2.translate(15, 20); // 10.基于原始字符图形J和变换对象创建阴影图形对象,并绘制到Graphics中 g2.fill(shadowTransform.createTransformedShape(jshape)); // 11. 调整回原始图形J的BASELINE原点坐标 g2.translate(-15, -20); // Undo the translation above // 12. 和绘制普通图形一样绘制基于字符生成的Shape对象,既可以填充也可以只是绘制边框。 g2.setPaint(Color.blue); g2.fill(jshape); g2.setPaint(Color.black); g2.draw(jshape); // 13. 绘制原始字符图形A和他的阴影,处理方式和上面J的完全一致。 g2.translate(75, 0); g2.setPaint(shadowPaint); g2.fill(shadowTransform.createTransformedShape(ashape)); g2.setPaint(new Color(0, 255, 0, 125)); g2.fill(ashape); g2.setPaint(Color.black); g2.draw(ashape); // 14. 绘制字符V的阴影。 g2.translate(75, 0); g2.setPaint(shadowPaint); g2.fill(shadowTransform.createTransformedShape(vshape)); // 15. 通过纹理绘制字符V的原图形。 BufferedImage tile = new BufferedImage(50, 50, BufferedImage.TYPE_INT_RGB); Graphics2D tg = tile.createGraphics(); // 15.1 纹理的背景为pink tg.setColor(Color.pink); tg.fillRect(0, 0, 50, 50); // 15.2 纹理上绘制渐变的椭圆 tg.setPaint(new GradientPaint(40, 0, Color.green, 0, 40, Color.gray)); tg.fillOval(5, 5, 40, 40); tg.dispose(); g2.setPaint(new TexturePaint(tile, new Rectangle(0, 0, 50, 50))); g2.fill(vshape); g2.setPaint(Color.black); g2.draw(vshape); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setTitle("A Good Example"); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setContentPane(new MyTest()); frame.setSize(WIDTH, HEIGHT); frame.setVisible(true); } }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3