我在我的一个窗体中将ListImage放在了我的ListView上。
一切都按预期工作。但现在我只想把这个图像放在ListView中。
与CSS类似:background-position: top right;
会将图像粘贴在元素的右上角。
有没有办法用Windows窗体这样做?
非常感谢:)
答案 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控件的低级自定义绘制工具。实施起来很复杂,但(现在)易于使用。
答案 3 :(得分:0)
否则你可以平铺图像,但它不会卡在一个地方。
listView1.BackgroundImageTiled = true;