在看一本以前买了一直没看的VB的书,想把里面的东西在C#里试验,结果出现一个奇怪的问题
一个Label控件,背景为Transparent,字体颜色书上为&H00C00000&,我在属性里直接打的0x00C00000,被自动转换为0,192,0,0(32位吗?),一开始看起来没问题,显示为红的,后来一直在写代码,没再看界面(都是数据库方面的代码,界面的应该说一点都没动过),但是今天突然发现出了问题,字也变透明了,一定要把第一个0改大才行
另一个&H8000000F&暂时没大问题
请问,可能是什么原因导致显示出来的颜色前后不一致?或者转换方法不对?该如何转换?
一个Label控件,背景为Transparent,字体颜色书上为&H00C00000&,我在属性里直接打的0x00C00000,被自动转换为0,192,0,0(32位吗?),一开始看起来没问题,显示为红的,后来一直在写代码,没再看界面(都是数据库方面的代码,界面的应该说一点都没动过),但是今天突然发现出了问题,字也变透明了,一定要把第一个0改大才行
另一个&H8000000F&暂时没大问题
请问,可能是什么原因导致显示出来的颜色前后不一致?或者转换方法不对?该如何转换?
this.label1.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(192)), ((System.Byte)(0)), ((System.Byte)(0)));
这就是我直接输0x00C00000后系统自动转换出来的
难道直接用0xXXXXXXXX不对吗?VB6和C#表示的含义不同?原来的程序里不可能放透明的字在那啊
VB中最前面的两位表示的绝对不是alpha值,似乎该是Red,而且最后两位也不是alpha
似乎FromArgb并不适用啊
最前面的00如果是00,则00+C0:B+00:G+00:R表示RGB
如果是80则80+000000:编号表示系统预定义的颜色,如
80000000:滚动条
80000001:桌面
80000002:活动标题栏
...
80000018 工具提示不知道是否有哪位有更好更正确的解释
下班前结帖