问题具体描述:
我每次通过输入不同参数,进行某种运算,得到了4个百分率,我打算用这些数据绘制饼图,并在当前窗体(Form1)中画出来。但是当图画出来之后,如果我打开了另一窗体(Form2),并且该窗体挡住了饼图,那么该窗体移开后,饼图被挡住的部分就没有了。然后缩小原窗体(Form1),如果一部分图象被挡住了,再把窗体放大,对应位置图象就也没了。画图的位置超出窗体现有范围就画不出来,但如果先拉大窗体,再画图就画得出来。所以我希望能够有种方法,能让画出来就切实地保留在窗体上。这里是绘图方面的部分代码:
Graphics g =
pictureBox1.CreateGraphics();
g.Clear(BackColor);//因为每输入一次数据计算就要重新画,所以每次先清了图
g.DrawString("当前情形", font1, black,
35, 20);
g.FillPie(red, 0, 40, 120, 120, 0,
ppp1[j]);
g.FillPie(blue, 0, 40, 120, 120,
ppp1[j], ppp2[j]);
g.FillPie(gold, 0, 40, 120, 120,
ppp1[j] + ppp2[j], ppp3[j]);
g.FillPie(green, 0, 40, 120, 120,
ppp1[j] + ppp2[j] + ppp3[j], ppp4[j]); g.DrawString(bfl1[j], font1,
black, x1[j], y1[j]);
g.DrawString(bfl2[j], font1, black, x2[j],
y2[j]);
g.DrawString(bfl3[j], font1, black,
x3[j], y3[j]);
g.DrawString(bfl4[j], font1, black, x4[j],
y4[j]);
解决方法:
使用:pictureBox1.img=getBitMapFile(pictureBox1.Width,pictureBox1.Height);
函数:
prviate BitMap getBitMapFile(int w,int h){ BitMap img=new
BitMap(w,h);
Graphics g=Graphics.CreatFromImg(img);
g.DrawString("当前情形", font1, black, 35,
20);
g.FillPie(red, 0, 40, 120, 120, 0,
ppp1[j]);
g.FillPie(blue, 0, 40, 120, 120,
ppp1[j], ppp2[j]);
g.FillPie(gold, 0, 40, 120, 120,
ppp1[j] + ppp2[j], ppp3[j]);
g.FillPie(green, 0, 40, 120, 120, ppp1[j] +
ppp2[j] + ppp3[j], ppp4[j]); g.DrawString(bfl1[j], font1, black,
x1[j], y1[j]);
g.DrawString(bfl2[j], font1, black,
x2[j], y2[j]);
g.DrawString(bfl3[j], font1, black, x3[j],
y3[j]);
g.DrawString(bfl4[j], font1, black, x4[j],
y4[j]);return img;}