在看一本以前买了一直没看的VB的书,想把里面的东西在C#里试验,结果出现一个奇怪的问题
一个Label控件,背景为Transparent,字体颜色书上为&H00C00000&,我在属性里直接打的0x00C00000,被自动转换为0,192,0,0(32位吗?),一开始看起来没问题,显示为红的,后来一直在写代码,没再看界面(都是数据库方面的代码,界面的应该说一点都没动过),但是今天突然发现出了问题,字也变透明了,一定要把第一个0改大才行
另一个&H8000000F&暂时没大问题
请问,可能是什么原因导致显示出来的颜色前后不一致?或者转换方法不对?该如何转换?

解决方案 »

  1.   

    Use "Color.FromArgb" method to create color.
      

  2.   

    刚才怎么半天上不了
    this.label1.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(192)), ((System.Byte)(0)), ((System.Byte)(0)));
    这就是我直接输0x00C00000后系统自动转换出来的
      

  3.   

    ...我在单位试了下,结果字也是透明
    难道直接用0xXXXXXXXX不对吗?VB6和C#表示的含义不同?原来的程序里不可能放透明的字在那啊
      

  4.   

    刚才特地找了台装了VB6的机器试了下,&H00C00000&跟0,192,0,0差了十万八千里,
    VB中最前面的两位表示的绝对不是alpha值,似乎该是Red,而且最后两位也不是alpha
    似乎FromArgb并不适用啊
      

  5.   

    经试验发现&H00C00000&可能是这样表示的
    最前面的00如果是00,则00+C0:B+00:G+00:R表示RGB
    如果是80则80+000000:编号表示系统预定义的颜色,如
    80000000:滚动条
    80000001:桌面
    80000002:活动标题栏
    ...
    80000018 工具提示不知道是否有哪位有更好更正确的解释
    下班前结帖