在充分。净框架可以使用的颜色。FromArgb()方法,以创建一个新的颜色,与α混合,像这样:

Color blended = Color.FromArgb(alpha, color);

Color blended = Color.FromArgb(alpha, red, green , blue);

但是在紧凑的框架(2.0具体地说),无论那些方法都可以,你只得到:

Color.FromArgb(int red, int green, int blue);

Color.FromArgb(int val);

第一,显然,甚至不让你进入一个阿尔法的价值,但该文件为后者显示,"val"是一个32位将斜角的价值(作为0xAARRGGBB而不是标准的24位0xrrggbb)的形式,所以这将是有意义的,你可能只是建立将斜角的价值,并通过它的功能。我尝试过这种与以下:

private Color FromARGB(byte alpha, byte red, byte green, byte blue)
{
    int val = (alpha << 24) | (red << 16) | (green << 8) | blue;
    return Color.FromArgb(val);
}

但无论我做什么,阿尔法混合从来没有工作,所得到的颜色总是以完全不透明,即使设置阿尔法值为0。

有任何人得到这个工作上的紧凑的框架?

有帮助吗?

解决方案

显然,这不是很简单,但是 仍然有可能, 如果你有窗户的移动5.0或更新的。

其他提示

显然,它并不完全, 简单,但仍然是可能的,如果你 有窗户的移动5.0或更新的。

哇...绝对不值得如果我必须把所有那个代码(和做司机的互操作!) 好的知道不过,谢谢你的链接。

还有一个 更站 在那里,看来做繁重的com互操作:

我采取这种代码和我加上这个

device.RenderState.AlphaBlendEnable = true;
device.RenderState.AlphaFunction = Compare.Greater;
device.RenderState.AlphaTestEnable = true;
device.RenderState.DestinationBlend = Blend.InvSourceAlpha;
device.RenderState.SourceBlend = Blend.SourceAlpha;
device.RenderState.DiffuseMaterialSource = ColorSource.Material;

在初始化程序和它的工作非常好,谢谢你

CE6.0不支持阿尔法融合。WM5.0和上述做,但不是通过。净CF,你会需要P/援引GDI的东西这样做。有现成的解决方案,但是,如果你有兴趣我可以挖掘的链接了明天在办公室。我有工作CE6.0目前所以我没有他们在我的脑海里。

如果您使用的是CE6.0可以使用伪透明度通过保留透明度的背景的颜色(例如ff00ff或东西同样地丑)和使用,在你的图像,为透明的地区。然后,你的父母控制,必须实现一个简单的界面,允许重新绘制的相关部分关于你女儿的控制'图形缓冲区。注意,这不会给你一个真正的"阿尔法渠道",而是只是一个硬断二种透明度。

它不是那么糟糕,因为它的声音。看看OpenNETCF ImageButton对于初学者。如果你要用这种方法,我有一些扩展版本的一些简单的控制这种技术躺在附近如果你有兴趣。

一个额外的缺点是,这种技术依赖于父母控制执行一个特殊的接口,与小孩儿的控制使用它的图纸。使用封闭源代码的组成部分(即也股它件)你的运气了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top