none
顏色轉換的問題 RRS feed

  • 問題

  • 各位大大

    由於 SCGRID 6.0的版本需要付費

    所以 繼續使用 SCGRID 4.5的版本

    在 VS2008中

    想要改變它的

    BackColor

    Code Snippet

     

    SCGrid1.set_CellBackColor(e.row, e.col, System.Convert.ToUInt32(Color.LightSkyBlue))

     

     

     

    需要將顏色轉換成 UInteger

    嘗試用 System.Convert.ToUInt32(Color.LightSkyBlue)  出現錯誤

    請問各位大大

    要怎樣 才可以將我想要的顏色轉換成正確的UInteger

     

    麻煩各位大大了

     

    2008年10月22日 上午 06:36

解答

  • Color c = Color.LightSkyBlue;

    UInt32 ui = Convert.ToUInt32(c.B + 256*c.G + 256*256*c.R);

    2008年10月22日 上午 07:56

所有回覆

  • 非微軟產品的問題,請自行與廠商聯繫。

    http://www.scgrid.com/index.htm

     

    2008年10月22日 上午 07:29
    版主
  • Color c = Color.LightSkyBlue;

    UInt32 ui = Convert.ToUInt32(c.B + 256*c.G + 256*256*c.R);

    2008年10月22日 上午 07:56
  • 謝謝 chhuang 大大了

    原來是這樣轉換

     

     

    不過 轉換出來的顏色好像差很多

    不知道chhuang 大大 是否有這些關於顏色轉換的資料 可以給我參考一下

     

     

     

    2008年10月23日 上午 02:44
  •  

    chhuang 大大了

     

    後來我發現

    原來 R 跟 B 的位置相反的

    將他們調整之後

    顏色就正確了

    謝謝大大了

    2008年10月23日 上午 02:52
  • 反過來?

     

    因為 windows 是 little Endian ,所以 4 bytes 在記憶體中是:BB GG RR AA ,就算不用透明色,也是 BB GG RR 00 ,寫成 16 進位值的整數或無符號整數,就是 &H00RRGGBB ,反過來的話,變成 &H00BBGGRR ,這不是 Windows 的顏色表示方式,也就表示顏色要一直轉換,會影響效能。

     

    這個元件設計得滿怪的。

     

    2008年10月23日 上午 03:45
  • 心大

     

    這個元件的設計 原本是FOR VB6.0

    再vb6.0中 使用的方式

    只要

    SCGrid1.CellBackColor(X, Y) = &H8000000F

    or

    SCGrid1.CellBackColor(X, Y) = vb.red

     

    不過 用在.net上

    卻需要將顏色轉換成UIngeter

     

    感覺就如大大所說 轉換的怪怪的

    不過因為 這個元件

    在使用上

    除了效能比較不好 LOAD 大量的 DATA 會頓頓的之外

    其他功能還不錯用

    比洋春的 DATAGRIDVIEW 好用多了

    所以小弟我

    還 捨不得 捨棄他

    不過 也持續在找 好用的元件中^^

    2008年10月23日 上午 09:19
  • VB6 用的元件... >_<

     

    2008年10月23日 上午 09:45