❶ 如何使用java设置LinearLayout背景为渐变色
至少有两种方案可以实现:
第一是使用背景图片,就是给Linearlayout添加一个background属性,值选择一张带渐变颜色的图片即可。
第二种方案是使用独立的颜色代码来替代上述一种的背景图片,比如可以在res/drawable下新建一个mycolor.xml,然后再在LinearLayout添加属性
android:background="@drawable/mycolor"即可
<?xmlversion="1.0"encoding="utf-8"?>
<shapexmlns:android="
<gradient
android:angle="270"
android:centerColor="#00FFFF"
android:centerX="0.5"
android:centerY="0。3"
android:endColor="#666666"
android:startColor="#0099FF"/>
<padding
android:bottom="7dp"
android:left="7dp"
android:right="7dp"
android:top="7dp"/>
<cornersandroid:radius="4dp"/>
</shape>
解析:其中android:angle ="270.0"代表角度为270,由上到下的渐变,如果我改变成0那么就变成了从左到右的渐变,如果改变90.0那么渐变会从下边往上渐变,可以 多改变一下参数试试效果。centerColor中间颜色; centerX: x轴渐变中心,从左到右渐变时有意义;centerY: 同理y轴的渐变中心;endColor 渐变终点颜色,同样startColor为渐变起点颜色。
上述代码效果如下:
❷ java中如何设置渐变的图案
importjava.awt.*;
importjava.awt.geom.*;
importjavax.swing.*;
publicclassExample6_6extendsJFrame
{
publicExample6_6()
{
super("设置线条粗细");
setSize(300,180);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
publicstaticvoidmain(String[]args)
{
newExample6_6();
}
publicvoidpaint(Graphicsg)
{
Graphics2Dg_2d=(Graphics2D)g;
GradientPaintgradient_1=newGradientPaint(0,10,Color.black,50,50,Color.yellow,false);
g_2d.setPaint(gradient_1);
Rectangle2Drect_1=newRectangle2D.Double(0,10,50,50);
g_2d.fill(rect_1);
GradientPaintgradient_2=newGradientPaint(60,60,Color.red,150,50,Color.white,true);
g_2d.setPaint(gradient_2);
Rectangle2Drect_2=newRectangle2D.Double(60,60,150,50);
g_2d.fill(rect_2);
}
}
❸ Java里面的GUI设计中怎么实现颜色的渐变(各个部分的RGB值不同)
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class RGB extends JFrame implements ActionListener{
JTextField t1,t2,t3;
JLabel b1,b2,b3;
JButton jb;
JPanel jp;
public RGB(){
super("RGB");
jp=new JPanel();
b1=new JLabel("R");
b2=new JLabel("G");
b3=new JLabel("B");
t1=new JTextField(3);
t2=new JTextField(3);
t3=new JTextField(3);
jb=new JButton("确定");
jb.addActionListener(this);
jp.add(b1);
jp.add(t1);
jp.add(b2);
jp.add(t2);
jp.add(b3);
jp.add(t3);
jp.add(jb);
jp.setLayout(new FlowLayout());
add(jp,BorderLayout.CENTER);
setSize(200,200);
setResizable(false);
setDefaultCloseOperation(this.DISPOSE_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getSource().getClass().getSimpleName().equals("JButton")){
int r=Integer.parseInt(t1.getText());
int g=Integer.parseInt(t2.getText());
int b=Integer.parseInt(t3.getText());
if(r>=0 && r<=255 && g>=0 && g<=255 && b>=0 && b<=255){
Color c=new Color(r,g,b);
jp.setBackground(c);
}else{
System.out.println("请输入(0-255)的整数!");
}
}
}
public static void main(String[] args) {
new RGB();
}
}
❹ Java绘图算法
最节能就是把6个图片轮流画一次,不过你要把这六个图片弄成资源,然后就当作普通图来画,这是最简单的方法,如果你要全部自己弄,这6个图很难创建出来,你图里有渐变效果,这个渐变的值不知道是多少。我给一个画渐变园的类给你。如果要自己画可能有点用。
public class PaintTest {
public static void main(String[] args) {
JFrame frame = new PaintTestFrame();
frame.show();
}
}
class PaintTestFrame extends JFrame implements ActionListener {
public PaintTestFrame() {
setTitle("PaintTest");
setSize(400, 400);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Container contentPane = getContentPane();
canvas = new PaintPanel();
contentPane.add(canvas, "Center");
JPanel buttonPanel = new JPanel();
ButtonGroup group = new ButtonGroup();
colorButton = new JRadioButton("Color", true);
buttonPanel.add(colorButton);
group.add(colorButton);
colorButton.addActionListener(this);
gradientPaintButton = new JRadioButton("Gradient Paint", false);
buttonPanel.add(gradientPaintButton);
group.add(gradientPaintButton);
gradientPaintButton.addActionListener(this);
texturePaintButton = new JRadioButton("Texture Paint", false);
buttonPanel.add(texturePaintButton);
group.add(texturePaintButton);
texturePaintButton.addActionListener(this);
contentPane.add(buttonPanel, "North");
}
public void actionPerformed(ActionEvent event) {
Object source = event.getSource();
if (source == colorButton) {
canvas.setColor();
} else if (source == gradientPaintButton) {
canvas.setGradientPaint();
} else if (source == texturePaintButton) {
canvas.setTexturePaint();
}
}
private PaintPanel canvas;
private JRadioButton colorButton;
private JRadioButton gradientPaintButton;
private JRadioButton texturePaintButton;
}
class PaintPanel extends JPanel {
public PaintPanel() {
Image image = Toolkit.getDefaultToolkit().getImage("java2s.gif");
MediaTracker tracker = new MediaTracker(this);
tracker.addImage(image, 0);
try {
tracker.waitForID(0);
} catch (InterruptedException e) {
}
bufferedImage = new BufferedImage(50, 50, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = bufferedImage.createGraphics();
g2.drawImage(image, 0, 0, null);
setColor();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.setPaint(paint);
Ellipse2D circle = new Ellipse2D.Double(0, 0, getWidth(), getHeight());
g2.fill(circle);
}
public void setColor() {
paint = Color.red; // Color implements Paint
repaint();
}
public void setGradientPaint() {
paint = new GradientPaint(0, 0, Color.red, (float) getWidth(),
(float) getHeight(), Color.blue);
repaint();
}
public void setTexturePaint() {
Rectangle2D anchor = new Rectangle2D.Double(0, 0, 2 * bufferedImage.getWidth(), 2 * bufferedImage.getHeight());
paint = new TexturePaint(bufferedImage, anchor);
repaint();
}
private Paint paint;
private BufferedImage bufferedImage;
}
❺ java 在默认黑色背景下画出一个随即色彩的渐变圆
您好,现给你一个简单MFC对话框例子,工程名为TEXT:
(1)Text.h:
class CTextApp : public CWinApp
{
public:
CTextApp();
~CTextApp();
// 重写
public:
virtual BOOL InitInstance();
ULONG_PTR gdiplusToken;
// 实现
DECLARE_MESSAGE_MAP()
};
extern CTextApp theApp;
注:ULONG_PTR gdiplusToken; ~CTextApp(); 为新添加的东西
(2)Text.cpp里
CTextApp::~CTextApp()
{
//GDI+释放
GdiplusShutdown(gdiplusToken);
}
BOOL CTextApp::InitInstance()
{
// 如果一个运行在 Windows XP 上的应用程序清单指定要
// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
//则需要 InitCommonControlsEx()。否则,将无法创建窗口。
INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
// 将它设置为包括所有要在应用程序中使用的
// 公共控件类。
InitCtrls.dwICC = ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);
CWinApp::InitInstance();
//GDI+初始化
GdiplusStartupInput StartupInput;
GdiplusStartup(&gdiplusToken, &StartupInput, NULL);
AfxEnableControlContainer();
// 创建 shell 管理器,以防对话框包含
// 任何 shell 树视图控件或 shell 列表视图控件。
CShellManager *pShellManager = new CShellManager;
// 标准初始化
// 如果未使用这些功能并希望减小
// 最终可执行文件的大小,则应移除下列
// 不需要的特定初始化例程
// 更改用于存储设置的注册表项
// TODO: 应适当修改该字符串,
// 例如修改为公司或组织名
SetRegistryKey(_T("应用程序向导生成的本地应用程序"));
CTextDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: 在此放置处理何时用
// “确定”来关闭对话框的代码
}
else if (nResponse == IDCANCEL)
{
// TODO: 在此放置处理何时用
// “取消”来关闭对话框的代码
}
// 删除上面创建的 shell 管理器。
if (pShellManager != NULL)
{
delete pShellManager;
}
// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
// 而不是启动应用程序的消息泵。
return FALSE;
}
注:GdiplusStartupInput StartupInput; GdiplusStartup(&gdiplusToken, &StartupInput, NULL);为新添加的东西
(3)stdafx.h
//GDI+
#include<gdiplus.h>
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib")
注:以上为为新添加的东西,需要的头文件就是上而这些
(4)接着你就可以使用LinearGradientBrush, 在TextDlg.cpp
void CTextDlg::OnPaint()
{
Graphics graphics(this->m_hWnd);
LinearGradientBrush linGrBrush(
Point(0,0),
Point(200,0),
Color(255,255,0,0),
Color(255,0,0,255));
graphics.FillRectangle(&linGrBrush, 0, 0, 200, 200);
}
❻ Java 怎么样画调色板、或彩虹、或色谱
先定义要渐变的颜色,然后试试这个
Graphics2D g2 = (Graphics2D) g;
//绘制渐变
g2.setPaint(new GradientPaint(
0, 0, new Color(116, 149, 226),
getWidth(), getHeight(),
new Color(199, 212, 247)
));
g2.fillRect(0, 0, getWidth(), getHeight());
❼ 怎么用Java多线程实现面板颜色渐变;麻烦给你具体例子。
用定时器不行么?
顺便写了个,参考而已
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.Timer;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.event.ActionListener;
public class TestA extends JFrame implements ActionListener {
//-----要实现ActionListener接口
public Timer t;
public JButton jb;
//-----一个定时器一个按钮用来显示变色效果
public int red = 0;
public int green = 0;
public int blue = 0;
public TestA() {
jb = new JButton("test");
jb.setBackground(Color.BLUE);
//-----定时器设置为0.2秒触发1次事件
t = new Timer(200, this);
this.setSize(200, 200);
this.getContentPane().add(jb);
this.setVisible(true);
//-----定时器开始运行
this.t.start();
}
public void actionPerformed(ActionEvent e) {
red += 5;
green += 10;
blue += 15;
red %= 255;
green %= 255;
blue %= 255;
//-----三种颜色按你所需搞个渐变的规则
this.jb.setBackground(new Color(red, green, blue));
this.jb.setVisible(true);
}
public static void main(String[] _s) {
TestA a = new TestA();
}
}
给你需要变色的元件挂个定时器。