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