私は周期表の各要素が異なる色を持つ周期表を持つアプリケーションを開発しています。今私は、ユーザーがピッカーから色を選択し、私は周期表で選択された色をマッチし、それに対応する要素を表示するユーザーに色の選択を表示しています。私はピッカーから色を選択し、2つの色を一致させる方法を知っています。私の質問は、周期表の要素が#FF0000の赤色で、ユーザーが赤い色を正確に同じ赤色のコード(#FF0000)ではないと仮定しています。この場合、ユーザーがピッカーから正確な色を選択することはほとんどありません。彼はわずかに異なるコードで同様の赤色を選ぶかもしれません。だから私はこの場合どのように一致します。 RGBのすべての怒りの中で赤色または特定の色を一致させる方法があるので、ユーザーがその範囲内の任意の色を選択すると、その色をテーブル内の任意の色に一致させることができます。RGBを使用して2つのほぼ同じマッチの色を一致させる方法
1
A
答えて
1
手順1:ユーザーが選択した3色のRGB値を抽出します。
int colorSelected = Color.RED; //#FF0000
int r = (colorSelected >> 16) & 0xFF; //255
int g = (colorSelected >> 8) & 0xFF; //0
int b = (colorSelected >> 0) & 0xFF; //0
ステップ2:周期律表の各色について、ステップ1を繰り返し、そして各値が範囲内
int currentCellColor = getCellColor(); //Let's say #FF0100
int currentRed = (currentCellColor >> 16) & 0xFF; //255
int currentGreen = (currentCellColor >> 8) & 0xFF; //0
int currentBlue = (currentCellColor >> 0) & 0xFF; //0
if (((currentRed >= (r - threshold)) && (currentRed <= (r + threshold))
&& ((currentGreen >= (g - threshold)) && (currentGreen <= (g + threshold))
&& ((currentBlue >= (b - threshold)) && (currentBlue <= (b + threshold))) {
//CurrentColor is within the desired threshold
} else {
//CurrentColor is not within the desired threshold
}
であることを一致:あなたの閾値
int threshold = 15
ステップ3を定義
技術的には、カラースペクトルは線形ではないと考えられますが、このように近似すると良いでしょう。さらなる研究のためには、まずあなたがint
にそのhexacode
を変換することができ、あなたがこのような何かを行うことができ
0
を閲覧することができます。いくつかの範囲、例えば20
と設定します。両方の色のためにヘキサから得たint
を比較してください。例えば、差が範囲20より大きい場合、非常に近いマッチングは存在しない。それが20未満であれば、非常に近いマッチングである。
私はあなたが結果として整数を取得した後、第2色の整数を取得し、両方の数字をint型の比較、
unsigned result = 0;
NSScanner *scanner = [NSScanner scannerWithString:@"#FF0000"];
[scanner setScanLocation:1]; // bypass '#' character
[scanner scanHexInt:&result];
NSLog(@"result :%d",result);
をヘキサで数を変換するためにObjective Cのコードを書いています。数字があなたの設定された範囲に応じて十分に近い場合、そうでなければ一致する色になります。
「ヘキサコードは、それが無視できるほどの違いがある場合は、すべての色のため、常にユニークその後もなります」
希望これは私が実装し、私のフィードバックを送信しようとします。.. :)
関連する問題
- 1. Tibcoの2つのほぼ同じプロセス
- 2. RGB色とRGBA色を一致させる方法
- 3. 2つのほぼ同じメソッドを持つJava抽象クラス
- 4. sql count 2つのテーブルのレコードがほぼ一致する
- 5. 複数のほぼ同じフラグメントに同じアダプターを再使用
- 6. mysqlの2つの行を一致させる方法PHPの同じテーブル
- 7. 2つのほぼ同じOpenCLカーネル間のパフォーマンスの差
- 8. 2つのプリントで同じ語句を一致させる
- 9. ほぼ同じJSX構造のコンポーネントをリファクタリングする方法
- 10. ほぼ同じ2枚の写真の違いを調べる
- 11. foreachを使用して2つの配列をマッチさせる方法
- 12. (ほぼ)同じBitbucketリポジトリを作成し、それらを両方とも同期させておく方法は?
- 13. grepを使用して、同じ行に2つのトークンが出現する箇所を一致させます。
- 14. 異なる結果を返す2つのほぼ同一のクエリ
- 15. 2つのほぼ同期イベントを待つための戦略
- 16. PHPは2つの配列に一致し、色を一致させます
- 17. 2つの同一のスイッチボタンを同じページで動作させる方法は?
- 18. 範囲内でほぼ同一のセルを見つける
- 19. 「同じ」クエリは、私は以下のようにほぼ同じで2つのクエリを持って
- 20. (ほぼ)同じアプリの複数インストール
- 21. 2つのほとんど同じコンストラクタを扱う方法
- 22. セマンティックUI 2つのほぼ同一のドロップダウン - 1つが動作し、1つが動作しません
- 23. 2つのほぼ同一のインターフェースで何をすればよいですか?
- 24. 2つのほぼ同じJavaScriptオブジェクトをLodashを使って1つにマージできますか?
- 25. デザインパターン:Javaでほぼ同じ2つのメソッドから重複コードを減らす
- 26. 同じ色の2つのyを同じ色でプロットする?
- 27. JavaScriptで同じ単語の2つの文字列を一致させる
- 28. 、ほぼ正確に同じ2つのプラグが、わずかに異なる
- 29. Pythonで2つのほぼ同じCSVを比較する最も効率的な方法は?
- 30. 2つのUILabelsのテキストを一致させる方法は?
感謝ニコラスに役立ちます。 私が考えることができる閾値の最大範囲は何でしょうか。 0-255または0-100の間ですか。 –
私が書いた例では、各色が0から255の範囲に変換されます。私はあなたの実装の残りの部分を知らないが、私はあなたが10と20の間のしきい値で "正しい"結果を期待できると言うだろう。明らかに、これはあなたが行ったことに応じていくつかの微調整が必要な場合があります:) – NSimon