TabPage更改时保持图形不变
本文关键字:图形 TabPage | 更新日期: 2023-09-27 18:00:25
我有一个窗体,它使用停靠在TabControl
的特定TabPage
内的Panel
上的Paint
事件来显示一组图形。
问题如下:
当用户切换到不同的TabPage
,然后决定返回到最初显示图形的TabPage
时,这些图形在默认情况下无效,因此Panel
显示为空白。
当在不同的TabPages之间切换时,我希望这些图形保持不变,完全独立于用户的操作。
一个要求:
由于图形很复杂,并且需要一些时间才能由计算机绘制,我不想每次都通过重复调用Paint
事件来重新绘制图形。相反,我只需要避免图形的默认无效。
我读过另一个问题,它可能有助于解决我的问题,但它超出了我的知识范围。
如果您想缓存图形,可以将所有内容绘制成位图,并将其设置为面板的背景图像。
下面是一些使用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;
}
只要确保在必要的时候调用绘图函数,因为这是您的责任Panel
的Resize
事件就是一个很好的例子,说明您需要在哪里调用它!
来自用户的数据变化是调用它的另一个明显原因。