TabPage更改时保持图形不变

时间:2015-06-28 20:11:35

标签: c# .net graphics paint tabcontrol

我有一个表单,使用Paint上的Panel事件显示一组图片,该事件停靠在TabPage的特定TabControl内。

问题如下:

当用户切换到其他TabPage,然后决定返回最初显示图形的TabPage时,默认情况下这些图形无效,因此Panel显示为空白

我希望这些图形在不同的TabPages之间切换时保持不变并完全独立于用户的操作。

一个要求:

由于图形很复杂并且需要一些时间才能被计算机绘制,我不想重复调用Paint事件,每次重新绘制图形。相反,我只需要避免图形的默认失效。

我已阅读this other question,这可能有助于解决我的问题,但这超出了我的知识范围。

1 个答案:

答案 0 :(得分:0)

如果要缓存图形,可以将所有内容绘制到位图中,并将其设置为面板的背景图像。

以下是使用Control的示例代码。只需传递Panel

即可
void drawInto(Control ctl)
{
    Bitmap bmp = new Bitmap(ctl.ClientSize.Width, ctl.ClientSize.Height);

    using ( Graphics G = Graphics.FromImage(bmp))
    {
        // all your drawing code goes here..!
        G.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
        G.DrawEllipse(Pens.DimGray, ctl.ClientRectangle);
        // ..
        // ..
    }
    ctl.BackgroundImage = bmp;
}

只需确保在必要时调用绘图功能 ,因为现在是您的责任。 Resize的{​​{1}}事件是你需要调用它的一个很好的例子!

来自用户的数据变化显而易见的另一个原因来调用它。