为Graphics.Draw添加透明度

时间:2013-02-26 11:33:14

标签: c#

是否可以在C#中使用透明度绘制图形,例如50%?

我的实际代码如下:

Image myBitmap = new Bitmap((int)sizeX,(int)sizeY);
Graphics myGraphics = Graphics.FromImage(myBitmap);

Pen outerPenColor = new Pen(Color.Black, 1);

myGraphics.DrawRectangle(outerPenColor, 1.0, 2.0, 3.0, 4.0);

这一切都很好,但我想要一个透明的黑色,这可能吗?

3 个答案:

答案 0 :(得分:3)

Graphics上下文和Bitmap对象默认支持透明度。您唯一需要做的就是绘制不透明的颜色。静态方法Color.FromArgb存在重载,它采用 alpha值和颜色并返回具有您指定的透明度的Color。 alpha值是介于0(完全透明)到255(完全不透明)之间的值。例如:

// 75% opaque (25% transparent) Red
var semiRed = Color.FromArgb(191, Color.Red);
// 50% opaque (50% transparent) Black
var semiBlack = Color.FromArgb(128, Color.Black);

现在您可以使用半透明黑色作为Pen的颜色并绘制半透明线条:

Pen outerPenColor = new Pen(semiBlack, 1);
myGraphics.DrawRectangle(outerPenColor, 1.0, 2.0, 3.0, 4.0);

答案 1 :(得分:0)

使用Color.FromArgb代替使用Color.Black,这将允许您指定alpha值。

答案 2 :(得分:0)

如果我没有弄错(未经测试),它应该在笔上使用不同的Alpha,例如:

Pen outerPenColor = new Pen(Color.FromArgb(128,0,0,0), 1);