当前位置: 代码迷 >> 综合 >> C# 图形显示Onpaint
  详细解决方案

C# 图形显示Onpaint

热度:100   发布时间:2023-09-23 03:10:05.0

C#里面有一个Onpaint本来我以为是每一段时间刷新一次,但是不是的,这个事件好像只有界面重写的时候才会调用这个事件,所以需要修改显示的图像信息,通过这个事件就不能直接修改显示信息,必须触发重写事件才能刷新我要显示的图像。

1、对Paint事件编程,首先根据Paint事件参数获取无效区域,然后在无效区域中按要求绘制就可以了。
无效区域是整个图形的一个部分,一般来说不可能对整个图形进行绘制,而是绘制其中的一部分,当前绘制的这个部分就被设置成无效区域,告诉C#当前的绘图区域,也就是局部绘制的意思啦。这样做的好处是提高图形运算的效率,像大图在视窗中的滚动、拖放就应用到了局部绘制技术的例子。
protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            Rectangle myRec;
            if (Height > Width * Proportion)
            {
                myRec = new Rectangle(0, 0, (int)(Width * Proportion),Width); //指定显示区域的位置的大小
            }
            else if(Height < Width * Proportion)
            {
                myRec = new Rectangle(0, 0,Height, (int)(Height/Proportion)); //指定显示区域的位置的大小
            }
            else
            {
                myRec = new Rectangle(0, 0,Height, Width); //指定显示区域的位置的大小
            }
            g.DrawImage(bmp, myRec);
        }

通过设置myRec区域可以达到局部绘制的能力,缺点就是图像没有实时的更新回来。

开头所说的问题不能实时更新图像,可以检测操作完成之后使用

this.Refresh(); 刷新界面

就可以调用Onpaint事件对图像重新绘制。