java绘图遮挡问题解决_C#画图窗口在移动和被遮挡时,图像出现错误解决方法

问题具体描述:

我每次通过输入不同参数,进行某种运算,得到了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;}

​​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值