جافا: العمليات مع الألوان (الجمع والطرح)؟ - الألوان في فئة ثابتة

StackOverflow https://stackoverflow.com/questions/1618169

سؤال

وأنا أعمل مع الحالات java.awt.Color. هل هناك أي طريقة للقيام بعمليات حسابية على الألوان؟ شيء من هذا القبيل rgb(20, 20, 20) + rgb(10, 200, 170) = rgb(30, 220, 190)؟

ما أحاول القيام به: لدي واجهة المستخدم الرسومية التي تحتوي على الطاولة، حيث إذا قام المستخدم بالنقر على الخلية، وخلايا أخرى تغير اللون على أساس علاقتها احد المحدد. أنا أبحث عن وسيلة لتجنب الصعب الترميز ما هي الألوان الأساسية، والذي قيم الألوان يغيروا.

وهكذا الخلية المحددة يمكن rgb(255, 0, 0)، وكل شيء آخر قد تكون بين rgb(0, 0, 0) وrgb(0, 255, 0) استنادا إلى قيمها. أنا أفكر ... تتضمن التعدادات؟

import java.awt.Color;

public enum ColorConstant {
    SELECTED (new rgb(255, 0, 0), "Red"),
    MAX_DISTANCE (new rgb(0, 255, 0), "Green")

    private Color shade;
    private ??? whichColorToModify;

}
هل كانت مفيدة؟

المحلول

وهناك طرق Color.brighter وColor.darker.

وبخلاف ذلك، وأنا أكتب عادة أساليب أداة صغيرة لمثل هذه الأغراض، مثل:

private static Color brightness(Color c, double scale) {
    int r = Math.min(255, (int) (c.getRed() * scale));
    int g = Math.min(255, (int) (c.getGreen() * scale));
    int b = Math.min(255, (int) (c.getBlue() * scale));
    return new Color(r,g,b);
}

نصائح أخرى

قد يكون

HSLColor ما كنت تبحث عنه. انها تسمح لك لضبط نغمة / ظلال اللون بسهولة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top