我有一个10x10(列x行)的tablelayout,我可以删除对象到这些单元格中。
我想将图像(作为背景)添加到可以可滚动的tablelayout并覆盖所有表格单元格,用户可以上传任何图像大小。
拖放正在工作,我的问题是:我无法滚动tablebackgound图像eventho我将AutoScroll
设置为true。
任何想法如何解决
更新: 现在我可以滚动,但图像以错误的方式显示
private void addImage()
{
Image img = Image.FromFile(@"C:\Users\c1\Desktop\img_Clean.png");
if (tableLayoutDropZone.BackgroundImage != null) tableLayoutDropZone.BackgroundImage.Dispose();
tableLayoutDropZone.BackgroundImage = img;
tableLayoutDropZone.AutoScrollPosition = Point.Empty;
tableLayoutDropZone.AutoScrollMinSize = new Size(img.Width, img.Height);
}
答案 0 :(得分:1)
你需要做三个的事情:
设置yourTLP.AutoScroll = true
,当然还有BackgroundImageLayout=None
设置合适的AutoScrollMinSize
;它应与您用作BackgroundImage
的图像具有相同的尺寸,即当图像发生变化时,您需要重置AutoScrollMinSize
Paint
事件进行编码以包含此行:e.Graphics.DrawImage(yourTLP.BackgroundImage, yourTLP.AutoScrollPosition);
以下是我加载新图片的代码:
Image img = Image.FromFile(someimagepath);
if (yourTLP.BackgroundImage != null) yourTLP.BackgroundImage.Dispose();
yourTLP.BackgroundImage = img;
yourTLP.AutoScrollPosition = Point.Empty;
yourTLP.AutoScrollMinSize = new Size(img.Width, img.Height);
请注意,当TLP 滚动控件时,它也会滚动!
如果您希望他们保持固定,您可以这样做:
Panel
BackColor
的{{1}}设置为TLP
Transparent
您可能需要打开Panel
才能更顺畅地滚动..