台灣最大程式設計社群網站
線上人數
731
 
會員總數:245218
討論主題:189090
歡迎您免費加入會員
討論區列表 >> C# >> VB6跟C# int to color
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
VB6跟C# int to color
價值 : 20 QP  點閱數:179 回應數:7

樓主

Max
門外漢
0 8
181 20
發送站內信

想請問各位大大
在VB6我把一個數字帶到BackColor裡面
跟在C#實作出來的顏色不同
舉例:65536在VB是黃色,但在C#不是
我有嘗試把65536換成16進位就成功了
但換成其他數字又錯了
想問說怎麼會這樣?
那又要如何改才會對呢?
感謝各位大大

搜尋相關Tags的文章: [ int to color ] ,
本篇文章發表於2019-10-18 09:34
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

Ader Chen
檢舉此回應

請試試看 ColorTranslator.FromOle
https://docs.microsoft.com/zh-tw/dotnet/api/system.drawing.colortranslator
本篇文章回覆於2019-10-18 12:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Max
檢舉此回應
To Ader Chen大大
這個我也試過了
還是沒辦法
本篇文章回覆於2019-10-18 13:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

Max
檢舉此回應
後來小弟土法煉鋼
直接測試10多組的數字轉成16進位
在VB與C#之間的差異
發現00FFFF(VB) = FFFF00(C#)
把最左邊兩位跟最右邊兩位的數字對調就會一樣了
但小弟還是不了解為什麼會又這樣的差異
煩請各位大大解答
本篇文章回覆於2019-10-18 13:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
最有價值解答

Ader Chen
檢舉此回應

我之前從 VB6 轉到 VB.NET 時, 是用 ColorTranslator.FromOle 轉換舊程式的顏色碼,
看來不適合您的情況.

您的情況可能是 big endian 與 little endian 的關係, Byte 順序相反,
參考:
https://social.msdn.microsoft.com/Forums/expression/zh-TW/69bd85ee-d3f0-4e8f-9b07-177cab61df25/win-api-copymemory-?forum=232
本篇文章回覆於2019-10-18 14:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

誰是誰
檢舉此回應
我猜想是 RGB 和 BGR 表示法的問題。
本篇文章回覆於2019-10-19 00:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
不錯的參考

blackwing
捐贈 VP 給 blackwing 檢舉此回應
我也覺得是表示法問題,像OpenCV的imread(),色彩順序是BGR,而在Pillow,色彩順序則是RGB。這時你可以使用OpenCV的cvtColor()函數做BGR與RGB的轉換。
本篇文章回覆於2019-10-21 09:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

Max
檢舉此回應
To 各位大大
因為之前的資料是從vb6將顏色的編碼存到DB
導致之後轉C#把顏色取出來就會出現這個問題
就像是各位大大說的RGB and BGR 的問題
至此小弟又學到了一課
感謝各位大大
本篇文章回覆於2019-10-25 11:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.