C# 图形显示Onpaint

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_34445388/article/details/79105058

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事件对图像重新绘制。


展开阅读全文

没有更多推荐了,返回首页