WinForms:ListView背景图像定位

时间:2011-02-01 18:43:20

标签: c# .net winforms listview

我在我的一个窗体中将ListImage放在了我的ListView上。

一切都按预期工作。但现在我只想把这个图像放在ListView中。

与CSS类似:background-position: top right;会将图像粘贴在元素的右上角。

有没有办法用Windows窗体这样做?

非常感谢:)

4 个答案:

答案 0 :(得分:2)

有可能,是的,你可以。如果不调整listview

,请调整大小或其他任何位置

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

            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;

答案 1 :(得分:0)

我知道的唯一方法是从ListView继承并覆盖OnPaintBackground方法并自己绘制带有Graphics.DrawImage()的Image。但是你必须自己计算位置;)你还可以为System.Drawing.ContentAlignment类型的对象添加costum属性。

答案 2 :(得分:0)

简短的回答是:你做不到。

This blog说明为什么LVM_SETBKIMAGE和拦截WM_ERASEBKGROUND无法与.NET ListView一起使用。

我发现这个问题的解决方案 - 在ObjectListView项目中使用 - 是使用本机ListView控件的低级自定义绘制工具。实施起来很复杂,但(现在)易于使用。

enter image description here

答案 3 :(得分:0)

否则你可以平铺图像,但它不会卡在一个地方。

listView1.BackgroundImageTiled = true;