我的.NET應用程序中有兩種顏色是用戶定義的。我想以某種方式獲得這兩種顏色之間的顏色。這是漸變中間的顏色。有什麼辦法可以做到這一點?在.NET中獲取兩種顏色的混合
3
A
回答
14
那麼,簡單方式是採取每個紅,綠,藍和阿爾法值的平均值:
Color c1 = ...;
Color c2 = ...;
Color midpoint = Color.FromArgb((c1.A + c2.A)/2,
(c1.R + c2.R)/2,
(c1.G + c2.G)/2,
(c1.B + c2.B)/2);
即使A,R,G和B的屬性是字節,他們會在添加之前被提升爲整數,所以不會出現溢出問題。除法的結果仍然在[0,255]範圍內,FromArgb
取值爲Int32
,但丟棄除最低8位之外的所有內容 - 正是我們想要的。
另一種方法是使用不同的顏色模型(例如HSV),但這會稍微複雜一些。對於漸變,這應該沒問題。
6
按顏色你是指Color
struct的實例嗎?
如果是這樣,則依次取每個R
,G
和B
組件,並計算每個組件的平均值。合併結果以獲得混合的顏色。
8
平均是最好的答案,但一個忠告:
顏色均值的一個問題是,除非它們是相同的專題系列,(高R,低G,低B),那麼您會最終趨向灰色。
請注意,使用平均功能越多,結果將變得越灰。
2
CByte((CInt(byte1) + CInt(byte2)) \ 2)
相關問題
- 1. 混合兩種顏色(GD)
- 2. 顏色混合超過2種顏色
- 3. 如何在OpenGL中將兩種顏色混合使用?
- 4. 創建一個顯示兩種組合顏色結果的顏色混合器
- 5. 將白色混合爲一種顏色
- 6. 創建在Matlab熱圖/顏色表,通過混合兩種顏色
- 7. 在PyQt中混合顏色?
- 8. 混合兩種透明顏色時alpha值的公式
- 9. Opengl多種紋理混合顏色
- 10. 在php中獲取混合顏色的百分比
- 11. 如何正確混合兩種int顏色
- 12. 在Emacs * shell中獲取256種顏色*
- 13. 中混合顏色編程
- 14. OpenGL混合單色顏色
- 15. 如何在一個超鏈接中獲取兩種顏色?
- 16. GD合併顏色混合
- 17. 在CSS中混合簡單的顏色
- 18. 兩種顏色值
- 19. sifr兩種顏色
- 20. 如何在CSS中混合顏色?
- 21. 在多邊形中混合顏色
- 22. 從ruby-ncurses中獲取256種顏色
- 23. 獲取兩種顏色之間所有顏色的十六進制代碼?
- 24. 獲取像素顏色的阿爾法混合
- 25. UILabel TEXT的兩種顏色
- 26. 查找其他兩種顏色的算法 - 在顏色的顏色空間中
- 27. 混合透明顏色
- 28. WebGL顏色混合計算
- 29. 如何混合顏色
- 30. 混合顏色GD - PHP
這很好。我也不得不四捨五入到最接近的整數,否則在某些情況下會崩潰。這是我最終使用的VB代碼: MyColor = Color.FromArgb(_ Decimal.Round(((CInt(Color1.A)+ CInt(Color2.A))/ 2)),_ Decimal.Round (((CInt(Color1.R)+ CInt(Color2.R))/ 2)),_(Decimal.Round((CInt(Color1.G)+ CInt(Color2.G))/ 2) Decimal.Round(((CInt(Color1.B)+ CInt(Color2.B))/ 2))__ ) – 2009-11-13 20:59:13
你不需要做所有的小數 - 只用\來代替/使用整數除法。你有Option Strict關閉嗎?我不希望它另外編譯。 – 2009-11-13 21:06:13