TabPage更改时保持图形不变

本文关键字:图形 TabPage | 更新日期: 2023-09-27 18:00:25

我有一个窗体,它使用停靠在TabControl的特定TabPage内的Panel上的Paint事件来显示一组图形。

问题如下:

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

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

一个要求:

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

我读过另一个问题,它可能有助于解决我的问题,但它超出了我的知识范围。

TabPage更改时保持图形不变

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

下面是一些使用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;
}

只要确保在必要的时候调用绘图函数,因为这是您的责任PanelResize事件就是一个很好的例子,说明您需要在哪里调用它!

来自用户的数据变化是调用它的另一个明显原因。