當咱們想加載圖片時,通常狀況下都會使用picturebox控件,這個控件能夠加載各類格式的圖片,固然也包括gif圖片。可是有時,咱們也但願一些數據展現控件也能夠加載圖片,好比說DataGridView,這個控件確實能夠作到加載圖片,可是當咱們想讓它加載gif圖片時問題就來了,咱們會發現當DataGridView加載gif圖片時,確實能夠顯示圖片,可是gif圖片的動態效果卻沒有顯示出來,只顯示gif圖片的第一個幀(這裏說的是具備多幀的gif圖片),下面就介紹一下如何解決這個問題。c#
首先,咱們在窗體上拖拽一個picturebox控件,把它的默認圖片設置爲你想要加載的gift圖片,把它的size都設置爲1。這麼作的目的主要是爲了隱藏它,可是不能把visible屬性設置爲false,由於使控件不可見會影響它的動態效果。測試
而後,咱們在窗體的page_load事件中加入一些測試代碼,例如:this
private void Form1_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); DataColumn dc = new DataColumn("Gif", typeof(Bitmap)); dt.Columns.Add(dc); dt.Rows.Add(dt.NewRow()); dt.Rows.Add(dt.NewRow()); dataGridView1.DataSource = dt; }
這裏採用DataTable做爲數據源,加入了兩個空行,可是並沒給他賦值,以後綁定到DataGridView控件。那何時賦值呢?彆着急,咱們繼續往下看。orm
這裏的賦值方法使用timer控件,往窗體中加入一個timer控件,而後添加以下測試代碼,例如:事件
private void timer1_Tick(object sender, EventArgs e) { if (this.dataGridView1.Rows.Count > 0) { for (int i = 0; i < dataGridView1.Rows.Count; i++) { //把窗體上的picturebox控件賦值給單元格 this.dataGridView1.Rows[i].Cells[0].Value = this.pictureBox1.Image; //注意對單元格進行強制重繪 this.dataGridView1.InvalidateCell(0, i); } } }
運行程序,咱們就能夠看到動態的gif圖片了。圖片