1

我在表单上有几个用户绘制的控件,不幸的是,当显示表单时,用户绘制的控件显示的是以前的表单背景,而不是当前的表单背景。

OnPaint 事件很简单,OnBackgroundPaint 事件为空……

像这样:

    protected override void OnPaint(PaintEventArgs pe)
    {
        pe.Graphics.DrawImageUnscaled(_bmpImage, 0, 0);            
    }

    protected override void OnPaintBackground(PaintEventArgs pevent)
    {
        //Leave empty...
    }

如何让当前背景成为显示的透明度,而不是前一个表单的背景?

4

2 回答 2

1

您需要设置窗口样式 - 这是一篇不错的基本文章

于 2008-10-19T04:39:20.660 回答
1

您似乎正在覆盖该OnPaintBackground方法而不对背景做任何事情。由于您将其留空,因此您可能一开始就不应该覆盖它。当您让默认OnPaintBackground处理程序完成其工作时会发生什么?那不应该自动正确地绘制当前控件的背景吗?

PS 我从未使用过自定义绘画 .Net 控件。我只是在猜测,试图帮助您找到解决问题的方法。如果我的建议完全不正确,请原谅我...

于 2008-10-19T04:54:55.807 回答