var bmp = new Bitmap(16, 16);
var gBmp = System.Drawing.Graphics.FromImage(bmp );
Color col = Color.FromArgb(pdmsCol.Red, pdmsCol.Green, pdmsCol.Blue);
gBmp.FillRectangle(new SolidBrush(col), new Rectangle(0, 0, 16, 16));
mColourPopupContainer.Image = bmp;
使用上面的代码将一个矩形绘制到我的控件中以获得给定的颜色。这种方法很好,除非颜色是洋红色,在这种情况下它似乎是透明的。我想这与将Magenta处理为透明的位图有关。如何关闭此行为?
mColourPopupContainer是一个UserControl(自定义颜色选择器)。
答案 0 :(得分:2)
您需要将Form.TransparencyKey
属性设置为Magenta以外的颜色。这个属性:
获取或设置表示表单透明区域的颜色。
默认情况下,它是洋红色,因此是您的问题。如果您将其设置为其他颜色不应该显示在表单上的任何其他位置,则问题应该消失。
答案 1 :(得分:0)
我目前的解决方案不是很好:检测何时使用洋红色并将其更改为不是洋红色。
var col = Color.FromArgb(r, g, b);
if (r==255 && g==0 && b==255 ) col = Color.FromArgb(r-1, g, b); // Don't use Megenta as it can be treated as transparent