web-dev-qa-db-ja.com

Dartでプログラム的に六角色を軽減または暗くする

私はこのハッシュカラーコードを変換しようとしています#159424 (緑色)より暗くて軽くてプログラムで輝く。これを行うにはどうすればいいですか。

緑色の色が濃い

toDarkColor(String hashColor){
  // how to convert that hash string to make green color darker?
}
 _

緑色の軽量化

toLightColor(String hashColor){
  // how to convert that hash string to make green color lighter? 
}
 _
7
jazzbpn

私はNuscarl 'Solutionを発見しました(より彩色の色合い)、色を軽くすると色の色が変わり、色を軽くすると白を生成します(白金に達する必要があります)。

これらの方法は、色合いを変えることなく「暗い」または「明るい」と思われる基本色の色合いを生成します(それは材料のColorクラスを使用するのでフラッタプロジェクトのためのものです)。

import 'package:flutter/material.Dart';

Color darken(Color c, [int percent = 10]) {
    assert(1 <= percent && percent <= 100);
    var f = 1 - percent / 100;
    return Color.fromARGB(
        c.alpha,
        (c.red * f).round(),
        (c.green  * f).round(),
        (c.blue * f).round()
    );
}

Color brighten(Color c, [int percent = 10]) {
    assert(1 <= percent && percent <= 100);
    var p = percent / 100;
    return Color.fromARGB(
        c.alpha,
        c.red + ((255 - c.red) * p).round(),
        c.green + ((255 - c.green) * p).round(),
        c.blue + ((255 - c.blue) * p).round()
    );
}

// Example: use a percent from 1 to 100,
// where 100 is the maximum darkening/brightening (i.e. black or white)
final Color darkerGreen = darken(Color(0xFF159424), 15);
 _

Hex文字列値からop尋ねた場合は、J.M.Taylorのソリューションを使用してください。

Color hexToColor(String code) {
    return Color(int.parse(code.substring(0, 6), radix: 16) + 0xFF000000);
}

final Color darkerGreen = darken(hexToColor('#159424'));
 _
1
mr_mmmmore

一部の一部が TinyColor 壊れているように見え、私は本当に軽くて暗くするだけで、Nauscarlの答えは私には完璧でした。

しかし、ハッシュカラーコード(String)をColorに変換していた元の質問に完全に答える必要がある部分が見つかりました。

これを行うには、これを使用できます。

Color hexToColor(String code) {
    return Color(int.parse(code.substring(0, 6), radix: 16) + 0xFF000000);
}
 _

上記は私のコードではありませんが、私が学んだことは ここでのチュートリアル

その後、それをNearhUscarlのコードと組み合わせると、希望の効果が得られます。

final Color darkerGreen = darken(hexToColor('#159424'));
 _
1
J.M. Taylor