关于c#在picturebox画线闪一下消失的问题

背景是想在picturebox上画一个中心十字架,尝试了很多种方法,发现画出来的线会闪一下,说明线画上去了,但是不知什么原因被刷新掉了。代码里做了一个显示十字架的按钮,按一下显示,再按一下消失

	private void DisplayCrossBtn_Click(object sender, EventArgs e)
	{
			graph = MainPcb.CreateGraphics();
            if (MainPcb.Visible == true && CrossDisplay == false)
            {
            	graph.DrawLine(new Pen(Color.Green, 2), 0, (int)(PicPnl.Height / 2), PicPnl.Width, (int)(PicPnl.Height / 2));
            	graph.DrawLine(new Pen(Color.Green, 2), (int)(PicPnl.Width / 2), 0, (int)(PicPnl.Width / 2), PicPnl.Height);
            	graph.Save();
                CrossDisplay = true;
            }
            else
            {
                MainPcb.Refresh();
                CrossDisplay = false;
            }
	}

任何时候点击按钮都能够画出十字架且不消失 ,但是在刷新图片后要重画十字架,调用下面函数

private void DrawCross()
{
    if (MainPcb.Visible == true && CrossDisplay == true)
    {
       graph.DrawLine(new Pen(Color.Green, 2), 0, (int)(PicPnl.Height / 2), PicPnl.Width, (int)(PicPnl.Height / 2));
        graph.DrawLine(new Pen(Color.Green, 2), (int)(PicPnl.Width / 2), 0, (int)(PicPnl.Width / 2), PicPnl.Height);
        graph.Save();
    }
}

这个时候就会出现闪一下消失的问题,然后考虑到按钮响应函数画线没问题,就调用两次按钮响应函数,第一次相当于将按钮点击一次,十字架消失,注意,这个时候其实调用了Refesh()函数,然后第二次调用按钮响应函数的内容跟 DrawCross()函数内容一样,区别就是先走了一次Refresh(),因此,在原来 DrawCross()函数中,先调用一次 Refresh(),再去画线,就不会消失,修改后如下:

private void DrawCross()
{
    if (MainPcb.Visible == true && CrossDisplay == true)
    {
    	MainPcb.Refresh();
        graph.DrawLine(new Pen(Color.Green, 2), 0, (int)(PicPnl.Height / 2), PicPnl.Width, (int)(PicPnl.Height / 2));
        graph.DrawLine(new Pen(Color.Green, 2), (int)(PicPnl.Width / 2), 0, (int)(PicPnl.Width / 2), PicPnl.Height);
        graph.Save();
    }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值