當前位置:首頁 » 操作系統 » 漸變演算法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都可以求出來,我去想想。。要等等。

熱點內容
c語言定義函數數組 發布:2024-10-28 19:09:49 瀏覽:599
演算法的藝術 發布:2024-10-28 19:08:58 瀏覽:833
安卓手機為什麼不能用蘋果有線耳機 發布:2024-10-28 18:36:06 瀏覽:208
mvc腳本 發布:2024-10-28 18:29:33 瀏覽:649
安卓怎麼修改版本號 發布:2024-10-28 18:23:39 瀏覽:728
面向介面編程的理解 發布:2024-10-28 18:18:56 瀏覽:597
伺服器存儲備份 發布:2024-10-28 18:15:59 瀏覽:789
解壓整理 發布:2024-10-28 18:10:57 瀏覽:697
在線源碼轉換 發布:2024-10-28 18:03:07 瀏覽:883
吃雞ios系統怎麼轉安卓系統 發布:2024-10-28 17:48:31 瀏覽:412