TabPage 更改时保持图形不变
Keeping graphics unaltered when TabPage changes
我有一个表单,它使用停靠在 TabControl
的特定 TabPage
中的 Panel
上的 Paint
事件显示一组图形。 =19=]
问题如下:
当用户切换到另一个 TabPage
然后决定返回到最初显示图形的 TabPage
时,这些图形默认无效,因此 Panel
显示为空白。
我希望这些图形在不同的 TabPage 之间切换时保持不变并且完全独立于用户的操作。
一个要求:
由于图形比较复杂,用电脑绘制需要一些时间,不想每次都重画图形调用Paint
事件反复。相反,我只需要避免图形的默认失效。
我已阅读 this other question 这可能有助于解决我的问题,但它超出了我的知识范围。
如果您想缓存图形,可以将所有内容绘制到位图中并将其设置为面板的背景图像。
这里是一些示例代码,使用 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
事件Panel
的一个很好的例子说明了您需要在哪里调用它!
来自用户的数据变化是调用它的另一个明显原因..
我有一个表单,它使用停靠在 TabControl
的特定 TabPage
中的 Panel
上的 Paint
事件显示一组图形。 =19=]
问题如下:
当用户切换到另一个 TabPage
然后决定返回到最初显示图形的 TabPage
时,这些图形默认无效,因此 Panel
显示为空白。
我希望这些图形在不同的 TabPage 之间切换时保持不变并且完全独立于用户的操作。
一个要求:
由于图形比较复杂,用电脑绘制需要一些时间,不想每次都重画图形调用Paint
事件反复。相反,我只需要避免图形的默认失效。
我已阅读 this other question 这可能有助于解决我的问题,但它超出了我的知识范围。
如果您想缓存图形,可以将所有内容绘制到位图中并将其设置为面板的背景图像。
这里是一些示例代码,使用 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
事件Panel
的一个很好的例子说明了您需要在哪里调用它!
来自用户的数据变化是调用它的另一个明显原因..