绘制透明图像不起作用

时间:2016-03-24 07:42:46

标签: c# graphics drawing transparent

我有一个PictureBox控件,其背景颜色设置为透明。我想在这个控件上绘制一个图像(来源:https://en.wikipedia.org/wiki/Seven-segment_display#/media/File:7-segment.svg)但不是透明背景,它的背景颜色是白色(不幸的是,油漆不支持alpha通道)。

以下是我尝试绘制位图的方法:

viewDidLoad() in the Class DetailViewController

绘制分段(绘图点类似)按预期工作,但绘制背景将不接受'GetImageAttributes()'创建的透明度。

另一个奇怪的是,如果我添加

func prepareForSegue()

之前

TableViewController

在Update()方法中,我的Grapics'g'只是黑色 - 无论我保留还是删除

  http://test:8081/purge/test3?filter={"log.epochTimeStamp":{"$lte": 1458750378}}
在'CreateBackgroundBitmap()'中的

,但在黑色背景上绘制片段按预期工作?!

有人看到问题所在吗?我错过了什么?

非常感谢:)

1 个答案:

答案 0 :(得分:0)

嗯,我明白了。我想我并不了解Graphics对象如何与位图交互,图形对象是由它构成的。

以下是必须如何更改的内容:

public Bitmap Update()
{
    Bitmap background = new Bitmap(301, 67);
    Graphics g = Graphics.FromImage(background);

    g.Clear(color: Color.White);

    Bitmap buffer = CreateBackgroundBitmap();

    g.DrawImage(buffer, new Rectangle(0, 0, 301, 67), 0.0f, 0.0f, 301, 67, GraphicsUnit.Pixel, this.GetImageAttributes());

    if (State == Powerstate.on)
    {
        for (int i = 0; i < digits.Count(); i++)
        {
            DrawSegment(ref g, digits[i], i);

            if (digits[i]?.Dot == Dot.dot_on)
            {
                DrawPoint(ref g, digits[i], i);
            }
        }
    }

    return background;
}