当前位置:首页 » 操作系统 » 渐变算法java

渐变算法java

发布时间: 2022-05-29 12:11:06

‘壹’ 颜色渐变算法

//r1, r2 是红色 从r1 到r2.
//g: 绿色 from g1 to g2
//b: from b1 to b2
//从颜色 rgb(r1, g1, b1) 到 rgb(r2, g2, b2) 渐变
void FillFluentRect(HDC hDC, RECT rect, byte r1, byte g1, byte b1, byte r2, byte g2, byte b2)
{
int iWidth = rect.right - rect.left;
int iHeight = rect.bottom - rect.top;

short rDif = r2 - r1;
short gDif = g2 - g1;
short bDif = b2 - b1;

for(int i = 0; i < iWidth; i++)
{
byte rCur, gCur, bCur;
rCur = r1 + (short)(float)(((float)rDif/(float)iWidth)*(float)i);
gCur = g1 + (short)(float)(((float)gDif/(float)iWidth)*(float)i);
bCur = b1 + (short)(float)(((float)bDif/(float)iWidth)*(float)i);

for(int y = 0; y < iHeight; y++)
SetPixel(hDC, rect.left + i, rect.top + y,
RGB(rCur, gCur, bCur));

}
}

‘贰’ 如何做一个java和程序,能实现颜色的渐变功能的

import javax.swing.JFrame ;
import javax.swing.JPanel ;

import java.awt.Color ;

public class ChangeColor extends JFrame implements Runnable {

private JPanel p ;

public static void main(String args[]) {
ChangeColor w = new ChangeColor();
w.setVisible(true) ;
}

public ChangeColor() {
//设置窗体属性
this.setSize(300,300) ;

//new出组件
p = new JPanel() ;

//初始化组件属性

//布置窗体
this.add(p) ;

//启动线程
new Thread(this).start() ;
}

public void run() {
while(true) {
for (int r = 0; r<256; r++)
for (int g = 0; g<256; g++)
for (int b = 0; b<256; b++) {
this.p.setBackground(new Color(r , g ,b)) ;
try { Thread.sleep(10) ; } catch (Exception ex) { }
this.repaint() ;
}

}
}
}

‘叁’ 图形图像软件中对两个色彩进行线性渐变的算法是什么是以AB两点色彩(假设为rgb制)的三个参数以及

会java吗?这一段我用于生成渐变色的代码,算法挺简单的,手机能看得清楚吗?

	privatevoidaddTwoColor(ColorbeginColor,ColorendColor,intstep){
//用浮点数组存储RGB3色,java中颜色值是0-255
float[]begin=beginColor.getRGBColorComponents(null);//开始的颜色
float[]end=endColor.getRGBColorComponents(null);//介绍的颜色

//这段代码是生成两个颜色之间step数量个渐变色
//没明白你的问题的后半部分,猜测也是要求生成两个颜色之间
//的N个渐变色,即使我理解错,应该问题不大,反正算法简单,
//你一看也就明白
for(intj=0;j<step;j++){
floatf[]=newfloat[3];
for(inti=0;i<3;i++){
//这个就是算法,RGB三色都按同样的算法
f[i]=begin[i]-(begin[i]-end[i])*j/step;
}
Colorcolor=newColor(f[0],f[1],f[2]);
this.colorList.add(color);
}
}

‘肆’ 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代码 实现两种颜色渐变填充图形,需要用户选择两种颜色,如何在界面显示这两种颜色选择器

JColorChooser

java提供了颜色选择器.
例子
http://www.fengfly.com/plus/view-169016-1.html

‘陆’ 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 数学 几何 算法,斜着的0,1,2,3,4,5递增递减

有意思。我也在看这题,这种渐变相当于

把起点(0,0)看成圆心,然后在固定角度a上,
半径为(x,0),(x, y).(0,0)组成的直角三角形的斜边r,斜边r递增的同时,输出0到255的L

斜边即半径r分成256份,每份就是级数L

等同于用求圆面某点对应的级数L,结合sin或者cos都可以求出来,我去想想。。要等等。

热点内容
精通脚本 发布:2025-05-20 14:42:56 浏览:385
东方财富经典版如何更改密码 发布:2025-05-20 14:42:43 浏览:944
砸口红解压 发布:2025-05-20 14:41:02 浏览:511
配置sp失败怎么办 发布:2025-05-20 14:35:08 浏览:179
java学到什么程度 发布:2025-05-20 14:31:54 浏览:480
压缩误差分析 发布:2025-05-20 14:27:53 浏览:98
每秒上亿次访问服务器怎么处理 发布:2025-05-20 14:10:07 浏览:315
按键精灵数据库操作 发布:2025-05-20 14:08:33 浏览:593
360浏览器无法访问网络 发布:2025-05-20 14:05:13 浏览:835
存储服务器地址错误 发布:2025-05-20 14:01:46 浏览:913