RadioButtonRenderer与透明背景

时间:2011-03-10 21:24:37

标签: c# winforms drawing radio-button

我遇到需要向System.Drawing.Image渲染单选按钮的情况。

System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(20,16);
using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
{                                    
    RadioButtonRenderer.DrawRadioButton(g, new Point(2, 2), RadioButtonState.CheckedPressed);
}
return System.Drawing.Image.FromHbitmap(bitmap.GetHbitmap());

除了它将默认控件 - 灰色作为背景绘制外,这是有效的。如何将背景颜色设置为透明?

1 个答案:

答案 0 :(得分:1)

不确定按钮的外观如何,但使用灰色的Bitmap.MakeTransparent Method应该有效。

如果不符合您的喜好,您可以使用ColorMatrix Class尝试更复杂的颜色转换:

ColorMatrix matrix = new ColorMatrix();

// This will change the image's opacity.
matrix.Matrix33 = 0.5f;

ImageAttributes imgAttrs = new ImageAttributes();
imgAttrs.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);

g.DrawImage(img, new Rectangle(0, 0, 50, 50), 0, 0, 50, 50, GraphicsUnit.Pixel, imgAttrs);