私は周期表の各要素が異なる色を持つ周期表を持つアプリケーションを開発しています。今私は、ユーザーがピッカーから色を選択し、私は周期表で選択された色をマッチし、それに対応する要素を表示するユーザーに色の選択を表示しています。私はピッカーから色を選択し、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. RGB色とRGBA色を一致させる方法
- 2. ほぼ同じ2枚の写真の違いを調べる
- 3. 2つのほぼ同期イベントを待つための戦略
- 4. JavaScriptで同じ単語の2つの文字列を一致させる
- 5. 同じ色の2つのyを同じ色でプロットする?
- 6. 2つのほとんど同じコンストラクタを扱う方法
- 7. 2つのUILabelsのテキストを一致させる方法は?
- 8. 2つのフローティングディビジョンのベースラインを一致させる方法
- 9. 2つのほぼ同じJavaScriptオブジェクトをLodashを使って1つにマージできますか?
- 10. デザインパターン:Javaでほぼ同じ2つのメソッドから重複コードを減らす
- 11. SQLクエリで2つのフィールドを一致させる方法は?
- 12. マージ2とほぼ同様の文章
- 13. サイファークエリで2つの一致ステートメントを使用する方法
- 14. cherrypyは同じプロジェクトから2つのほぼ同じWebサイトを提供できますか?
- 15. スライダーを使用して2つのツリービューでスクロールを同期させる方法
- 16. 同じページの2つのIDに同じスクリプトを使用する方法は?
- 17. 2つの配列の値を一致させて変更する方法
- 18. Apache 1.4 Axis 2はほぼ同じクライアントです。
- 19. 編集と表示のためにほぼ同じビューを使用する
- 20. tabBarControllerで同じ2つのViewController.xibを使用する方法
- 21. 同じサーバ上で2つのsshを使用する方法
- 22. 正規表現を完全一致でのみマッチさせる方法は?
- 23. 2つの配列を一致させ、c#を使用して一致した値を新しい配列に保持する方法?
- 24. - 同じUser.Identity.Nameを使用して同じビューで同じコントローラで2つのクエリを使用する。
- 25. 同じ値を持つAndroid 2つの整数は正しく一致していません
- 26. 複数の例外タイプを同じケースに一致させる
- 27. 2つの異なるワークシートから同じ名前が一致した後に%値を取得する方法
- 28. 同じデータベースを使用している2つのmysqlサーバ
- 29. 同じヘルパーを使用している2つのモジュールhelper.php
- 30. 複雑な方法で2つの配列を一致させる
感謝ニコラスに役立ちます。 私が考えることができる閾値の最大範囲は何でしょうか。 0-255または0-100の間ですか。 –
私が書いた例では、各色が0から255の範囲に変換されます。私はあなたの実装の残りの部分を知らないが、私はあなたが10と20の間のしきい値で "正しい"結果を期待できると言うだろう。明らかに、これはあなたが行ったことに応じていくつかの微調整が必要な場合があります:) – NSimon