java synth,Java中Synth外观学习(四)--定制JPanel的背景,自定义绘制

Synth外观中可以自定义托管的绘制类。

在项目中新建如下类,绘制一直渐变的背景和一条曲线:

package demo;

import java.awt.Color;

import java.awt.GradientPaint;

import java.awt.Graphics;

import java.awt.Graphics2D;

import java.awt.RenderingHints;

import java.awt.geom.CubicCurve2D;

import javax.swing.UIManager;

import javax.swing.plaf.synth.SynthContext;

import javax.swing.plaf.synth.SynthPainter;

public class PanelBackgroundPainter extends SynthPainter {

@Override

public void paintPanelBackground(SynthContext context, Graphics g,

int x, int y, int w, int h) {

Color start = UIManager.getColor("Panel.startBackground");

Color end = UIManager.getColor("Panel.endBackground");

Graphics2D g2 = (Graphics2D) g;

GradientPaint grPaint = new GradientPaint(

(float) x, (float) y, start, 1, h, end);

g2.setPaint(grPaint);

g2.fillRect(x, y, w, h);

g2.setPaint(null);

g2.setColor(new Color(255, 255, 255, 120));

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

CubicCurve2D.Double arc2d = new CubicCurve2D.Double(0, h / 4, w / 3, h / 10, .66 * w, 1.5 * h, w, h / 8);

g2.draw(arc2d);

g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF);

}

}

XML中按照如下定义:

30

123

235

1

20

80

效果图如下:

413823.html

1234e712f8caaa4bfee798f75a520343.png

实际上按照如上方式,你可以定义更多的参数,比如渐变步长,是否循环,渐变方向等。在自定义类中可以可以自定义更多的动作,比如水印等其他更多内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值