我正在用java制作绘图工具,但是橙色看起来有点......光。
何处将颜色名称放在函数public Color darker()
?
package MaddpawNightpainter;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JComponent;
/*
Author: Bogdan Ganev
Title: Maddpaw Nightpainter
Description: Nightpainter is a drawing tool, part of Maddpaw - Multifunctional App for Designers,
Developers And Writers
Copyright: Copyright (C) 2016 Bogdan Ganev. All rights reserved. Maddpaw, Multifunctional App for Designers,
Developers And Writers is a trademark of Bogdan Ganev. Java TM is a trademark of Oracle Corporation (R)
*/
public class Nightpainter extends JComponent {
// Image in which we're going to draw
private Image image;
// Graphics2D object ==> used to draw on
private Graphics2D g2;
// Mouse coordinates
private int currentX, currentY, oldX, oldY;
public Nightpainter() {
setDoubleBuffered(false);
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
// save coord x,y when mouse is pressed
oldX = e.getX();
oldY = e.getY();
}
});
addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
// coord x,y when drag mouse
currentX = e.getX();
currentY = e.getY();
if (g2 != null) {
// draw line if g2 context not null
g2.drawLine(oldX, oldY, currentX, currentY);
// refresh draw area to repaint
repaint();
// store current coords x,y as olds x,y
oldX = currentX;
oldY = currentY;
}
}
});
}
protected void paintComponent(Graphics g) {
if (image == null) {
// image to draw null ==> we create
image = createImage(getSize().width, getSize().height);
g2 = (Graphics2D) image.getGraphics();
// enable antialiasing
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
// clear draw area
clear();
}
g.drawImage(image, 0, 0, null);
}
// now we create exposed methods
public void clear() {
g2.setPaint(Color.white);
// draw white on entire draw area to clear
g2.fillRect(0, 0, getSize().width, getSize().height);
g2.setPaint(Color.black);
repaint();
}
public void red() {
// apply red color on g2 context
g2.setPaint(Color.red);
}
public void black() {
g2.setPaint(Color.black);
}
public void magenta() {
g2.setPaint(Color.magenta);
}
public void green() {
g2.setPaint(Color.green);
}
public void blue() {
g2.setPaint(Color.blue);
}
public void yellow() {
g2.setPaint(Color.yellow);
}
public void orange() {
g2.setPaint(Color.orange.darker);
}
}
这是第一个文件,另一个是:
包MaddpawNightpainter;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Nightpainter2 {
static JButton clearBtn, blackBtn, blueBtn, greenBtn, redBtn, magentaBtn, yellowBtn, orangeBtn;
static Nightpainter drawArea;
static ActionListener actionListener = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == clearBtn) {
drawArea.clear();
} else if (e.getSource() == blackBtn) {
drawArea.black();
} else if (e.getSource() == blueBtn) {
drawArea.blue();
} else if (e.getSource() == greenBtn) {
drawArea.green();
} else if (e.getSource() == redBtn) {
drawArea.red();
} else if (e.getSource() == magentaBtn) {
drawArea.magenta();
} else if (e.getSource() == yellowBtn) {
drawArea.yellow();
} else if (e.getSource() == orangeBtn) {
drawArea.orange.darker();
}
}
};
public static void main(String[] args) {
// create main frame
JFrame frame = new JFrame("Nightpainter 1.0");
// set layout on content pane
frame.setLayout(new BorderLayout());
// create draw area
drawArea = new Nightpainter();
// add to content pane
frame.add(drawArea, BorderLayout.CENTER);
// create controls to apply colors and call clear feature
JPanel controls = new JPanel();
clearBtn = new JButton("Clear");
clearBtn.addActionListener(actionListener);
blackBtn = new JButton("Black");
blackBtn.addActionListener(actionListener);
blueBtn = new JButton("Blue");
blueBtn.addActionListener(actionListener);
greenBtn = new JButton("Green");
greenBtn.addActionListener(actionListener);
redBtn = new JButton("Red");
redBtn.addActionListener(actionListener);
magentaBtn = new JButton("Magenta");
magentaBtn.addActionListener(actionListener);
yellowBtn = new JButton("Yellow");
yellowBtn.addActionListener(actionListener);
orangeBtn = new JButton("Orange");
orangeBtn.addActionListener(actionListener);
// add to panel
controls.add(greenBtn);
controls.add(blueBtn);
controls.add(blackBtn);
controls.add(redBtn);
controls.add(magentaBtn);
controls.add(yellowBtn);
controls.add(orangeBtn);
controls.add(clearBtn);
// add to content pane
frame.add(controls, BorderLayout.NORTH);
frame.setSize(850, 850);
// can close frame
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// show the swing paint result
frame.setVisible(true);
// :)
}
请告诉我写些什么来使橙色变暗。
答案 0 :(得分:5)
你可以这样做:
Color.ORANGE.darker()
或
Color.orange.darker()
另外,如果你仍然认为它不够黑,你甚至可以这样做:
Color.orange.darker().darker().darker().darker().darker() // as many times as you want!
此外,类中定义的默认橙色为:
new Color(255, 200, 0)
如果你愿意,你可以对这些数字做点什么!
在您的代码中,更改此行:
g2.setPaint(Color.orange.darker);
到
g2.setPaint(Color.orange.darker()); // darker ain't a var, it is a method.
而且,
drawArea.orange.darker();
到
drawArea.orange(); //You cannot call darker() on void!
答案 1 :(得分:-3)
这是我创造的:
public static int darker (int color, float factor) {
int a = Color.Orange( color );
return Color.argb( a,
Math.max( (int)(r * factor), 0 ));
}