2013-01-04 39 views
-1

我正在做一個應用程序,要求用戶從顏色選擇器中選擇多種顏色,並設置一些顏色將有更多機會被選中的概率。容易理解複雜的顏色選擇器

一個例子:比方說,用戶選擇紅色,綠色和藍色的顏色,並選擇紅色應該有3個機會被選中,而另一個只有1個。 因此,最終紅色將有60%的機會,綠色20%,藍色20%。

現在我想這樣做,但圖形和易於理解。

我有一些想法,但我不確定哪一個是好的......或者很容易......或者其他什麼。

理念1:

picker1

用戶選擇其顏色更容易得到。數字基本上是每種顏色的重量。 這個問題在於,由於顯而易見的原因,你不能準確地獲得全部顏色(全部爲16,777,216)...所以你需要相對較少的顏色(約150或者其他顏色)。

理念2:

picker2

用戶從區域選擇顏色。這是更好的,因爲你可以有全面的顏色......但我想不出一種簡單的方法來獲得更多機會被選中的顏色(如上面的權重)。

這些只是我有缺陷的想法。你可以改進這些或者提供其他想法。一個顏色選擇器的源代碼的鏈接,正是我想要的會更好。 :)

+2

這類問題可能是更適合http://programmers.stackexchange.com – rmaddy

回答

0

如果我給你權,用戶所要做的顏色和數量/重量之間的分配。我可以看到,這很容易與第一個想法一起使用,但不能與第二個一起使用,因爲在後者中,您沒有明確的顏色值來檢查。

唯一能想到的就是將用戶形狀輸入(這些斑點)轉換成矩形(或者只允許那些開頭)並將它們存儲在您的應用中,每個矩形的權重分配爲好。

根據掌握的信息,那麼你可以計算出一些「重帶」:

  1. 假設:三個rects(不要緊,他們是在屏幕上哪裏,但是爲了清楚起見,我的名字左邊,中,右):左(重量4),中間(重量2),右(重量6)

  2. 薩姆所有重量(12)

  3. 查找歸一化因子從總和到達範圍0 .. 1 - > factor = 1/12

  4. 對於每個RECT計算歸一化的重量:
    L = 4 * 1/12 = 0.333
    M = 2 * 1/12 = 0.167
    R = 6 * 1/12 = 0.500

=>所得三個波段:
#1從0.0到0.167
#2從0.167至0.500(= 0.167 + 0.333)
#3從0.500至1.000

  1. 生成隨機值下注例如0和1,例如0.75。

  2. 比較隨機值,對歸一化的重量樂隊 - > 0.75爲0.5至1.0 -

現在>第三矩形

,你找到了你的相關RECT,讓其他兩個隨機值與界限是所確定的矩形的X(第一個值)和Y(第二個值)座標的最小值和最大值(在用戶首先繪製這些斑點/矩形之後保存了這些矩形)。

最後一步是在剛剛生成的新座標和voilà上面顯示的顏色範圍紋理中查找顏色值,然後根據分配給矩形的權重確定顏色。

0

您應該在用戶選擇顏色的地方進行選擇,一旦完成,他可以選擇不同顏色的權重。