作了一个简单的测试程序,在FORM1中加入一个TABCONTROL,在tabPage1上添加一个PictureBOx。
目的:在Tabpage切换tabpage1时,在 PictureBOx 自动绘制一个椭圆,切换到tabpage2时,绘制另一个椭圆。
结果:再PictureBOx 自动绘制的椭圆一闪而过;而切换到tabpage2时,成功绘制另一个椭圆。
源程序如下:请大家指点,谢谢!public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} Graphics grPic;
Graphics grPage;
private void Form1_Load(object sender, EventArgs e)
{
grPic = this.pictureBox1.CreateGraphics();
grPage = this.tabPage2.CreateGraphics();
} private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.tabControl1.SelectedIndex == 0)
{
grPic.DrawEllipse(Pens.Red, 10, 10, 100, 150);
// 这个只能一闪而过。
}
else
{
grPage.DrawEllipse(Pens.Red, 110, 10, 100, 150);
//这个可以显示
}
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
grPic.DrawEllipse(Pens.Red, 10, 10, 100, 150);
//仍然不成功 }
}
目的:在Tabpage切换tabpage1时,在 PictureBOx 自动绘制一个椭圆,切换到tabpage2时,绘制另一个椭圆。
结果:再PictureBOx 自动绘制的椭圆一闪而过;而切换到tabpage2时,成功绘制另一个椭圆。
源程序如下:请大家指点,谢谢!public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} Graphics grPic;
Graphics grPage;
private void Form1_Load(object sender, EventArgs e)
{
grPic = this.pictureBox1.CreateGraphics();
grPage = this.tabPage2.CreateGraphics();
} private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.tabControl1.SelectedIndex == 0)
{
grPic.DrawEllipse(Pens.Red, 10, 10, 100, 150);
// 这个只能一闪而过。
}
else
{
grPage.DrawEllipse(Pens.Red, 110, 10, 100, 150);
//这个可以显示
}
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
grPic.DrawEllipse(Pens.Red, 10, 10, 100, 150);
//仍然不成功 }
}
有几个tabpage就要加几个picturebox
如果只是添加图片..属性设置下可以不?
你需要变换的时候读取IMAGELIST里的索引
Graphics grPic = null;
Image image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
grPic = Graphics.FromImage(image);