我想转换一个object Color
,到Int
,把他在crTextColor
成员,所以我用的方法myColor.ToArgb()
,但颜色的变化,并显示不同的颜色。
为什么会这样?
这是代码:
CHARFORMAT2 fmt = new CHARFORMAT2();
fmt.cbSize = Marshal.SizeOf(fmt);
// check if the text contains CFE_AUTOCOLOR effect
SendMessage(new HandleRef(this, Handle), EM_GETCHARFORMAT, SCF_SELECTION, ref fmt);
if ((fmt.dwEffects & CFE_AUTOCOLOR) == CFE_AUTOCOLOR)
{
fmt.dwEffects -= CFE_AUTOCOLOR;
}
fmt.dwMask = CFM_COLOR;
Color c = Color.Red;
fmt.crTextColor = c.ToArgb();
SendMessage(new HandleRef(this, Handle), EM_SETCHARFORMAT, SCF_SELECTION, ref fmt);
3条答案
按热度按时间ehxuflar1#
这个很好用。你在做什么不一样的事吗?
编辑:(看到你的编辑后)
好吧。你问倒我了,我真的不懂这些。但是:
如果你去MSDN的页面上
CHARFORMAT2
这里http://msdn.microsoft.com/en-us/library/windows/desktop/bb787883%28v=vs.85%29.aspx和搜索crTextColor
,你会发现(作为第五种情况)的解释。它说它的类型是:COLORREF。如果你点击那个链接-它说它是RGB
。点击RGB
链接,会转到http://msdn.microsoft.com/en-us/library/windows/desktop/dd162937%28v=vs.85%29.aspx,上面写着:另一方面-如果你去这里http://msdn.microsoft.com/en-us/library/system.drawing.color.toargb.aspx你看到(在“备注”),
Color.ToArgb
是ARGB
:最高有效字节(MSB)(用AA表示)是alpha分量值。
所以也许这就是问题所在。但是,再说一次,**我真的不知道这些东西!”我只是做了一些搜索。
ih99xse12#
看看这个对你是否有效
jmp7cifd3#
我已经使用二进制和移位运算符完成了这一操作。