2016-05-20 17 views
0

私はJavaで描画ツールを作っていますが、オレンジは私に少し似ています。 関数の色名はどこに置くかpublic Color darker()Javaで色をより暗くする方法

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。

橙色を暗くするために何を書きますか教えてください。

あなたが行うことができます
+0

'color = color.darker();'、多分? –

答えて

4

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()); // darker ain't a var, it is a method. 

そして、

drawArea.orange(); //You cannot call darker() on void! 
+2

重要な点は、 'darker()'が新しい色を返すということです。 'Color.ORANGE'を暗くしません。したがって、これらのステートメントは効果的にノーオプスです。結果を使って何かをする必要があります。 –

+0

@AndyTurner、それはあなたが思うものではありません! (申し訳ありません!)それは - 'setBackground(Color.orange.darker());' – Hackerdarshi

+2

のようです。だから...あなたは 'setBackground'に渡すと、結果で何かをしています。私が言ったように聞こえる。 –

-3

drawArea.orange.darker(); 

g2.setPaint(Color.orange.darker); 

これは私が作成したものです:

public static int darker (int color, float factor) { 
    int a = Color.Orange(color); 


    return Color.argb(a, 
      Math.max((int)(r * factor), 0)); 
} 
+3

['java.awt.Color'](https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html)クラスの場合、' Color.Orange'は'Color.argb'はメソッドではなく、' r'は定義されていません。他の 'Color'クラスを参照している場合、そのクラスが何であるかを教えてください。 –

関連する問題