2011-02-01 204 views
0

我已經把我的ListView中的一個BackgroundImage放在我的一個窗體中。WinForms:ListView的BackgroundImage定位

一切按預期工作。但是現在我只想將這個圖像定位在ListView中。

像CSS一樣:background-position: top right;將圖像粘貼在元素的右上角。

有沒有這樣做的Windows窗體的方式?

感謝很多:)

回答

0

簡短的回答是:你不能。

This blog文件爲什麼LVM_SETBKIMAGE和攔截WM_ERASEBKGROUND不能與.NET ListViews一起使用。

我發現這個問題的解決方案(在ObjectListView項目中使用的解決方案)是使用本機ListView控件的低級定製繪圖工具。實施起來很複雜,但(現在)很容易使用。

enter image description here

0

我知道的唯一途徑是從的ListView繼承和覆蓋OnPaintBackground梅索德,並與自己的Graphics.DrawImage()繪製圖像。但是你必須自己計算位置;)還可以添加一個Costum屬性,用於System.Drawing.ContentAlignment類型的對齊。

+1

OnPaintBackground不運行,繪畫是由本地Windows控件完成的。 – 2011-02-01 19:33:28

2

這是可能的,所以是的,可以。放在調整大小或其他任何地方,如果你不調整列表視圖

(需要一些優化我猜,不知道)

  Bitmap bmp = new Bitmap(listView1.Width, listView1.Height); 
      using (Graphics g = Graphics.FromImage(bmp)) 
      { 
       SolidBrush br1 = new SolidBrush(Color.White); 
       g.FillRectangle(br1, 0, 0, listView1.Width, listView1.Height); 
       g.DrawImage(Image, listView1.Width - Image.Width, listView1.Height - pictureBox1.Image.Height); 
      } 
      listView1.BackgroundImage = bmp; 
0

否則可以平鋪圖像,但它不會停留在一個地方。

listView1.BackgroundImageTiled = true;