C# 圖形顯示Onpaint

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事件對圖像重新繪製。


發佈了27 篇原創文章 · 獲贊 119 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章