日期:2014-05-18  浏览次数:21122 次

c# winform 界面设置了BackgroundImage 适应界面大小问题
RT:

设置了BackgroundImageLayout属性为Stretch,这样窗体改变大小,图片会相应改变,问题来了,我要根据图片的内容来点击进行操作,放置button的话,窗体改变大小,button的位置就和图片背景里面的内容位置对不到了,大家有什么好的办法处理这个问题吗?

或者怎么可以取得鼠标所在图片的区域位置?

------解决方案--------------------
要搁我啊,就把窗口大小定死……
------解决方案--------------------
就算第一次能把按钮和它对应的图片位置联系起来,可是图片大小会变啊,位置就变了,
找不到图片的一个固定的属性来对应按钮的事件
------解决方案--------------------
你好,我们在做这个的时候,直接将窗体大小设置固定。

如果你一定要这样做,建议你那个背景图片不要那样切,把需要放按钮的地方单独弄出来。然后设置图片按钮的anchor
------解决方案--------------------
private void SendEmail_MouseMove(object sender, MouseEventArgs e)
{
richTextBox1.Text+="X:"+Cursor.Position.X+" Y:"+ Cursor.Position.Y+"\r\n";
}
------解决方案--------------------
按钮是长方形的吧,窗体初始化的时候就把窗体尺寸和放好位置的按钮的尺寸和位置记录,以后窗体大小改变,将改变后的窗体尺寸和原先的窗体尺寸按钮位置尺寸进行计算,能得出按钮的现在应该变成的尺寸和位置
------解决方案--------------------
我看了一下,你这种情况,在窗体变化的时候,如果你的控件都设置了Anchor属性的话,不会出现这个问题,反而会出现在窗体移动或者拖动时,窗体会出现闪屏。体验性不好。
------解决方案--------------------
你还是找个规则,可以计算坐标,这样才能不管尺寸如何,都能计算得到点击区域的坐标
------解决方案--------------------
比如原先窗体是 500*500 按钮是 70*20 ,位置是 100,400 ,窗体拉大成 550*500 后,长度多了 10% ,那按钮长度就乘以 110%,变为 77,左边距乘以 110%,变为 110 ,与拉伸后的图像基本能保持一致
------解决方案--------------------
探讨
引用:
比如原先窗体是 500*500 按钮是 70*20 ,位置是 100,400 ,窗体拉大成 550*500 后,长度多了 10% ,那按钮长度就乘以 110%,变为 77,左边距乘以 110%,变为 110 ,与拉伸后的图像基本能保持一致


呵呵,现在我固定它的区域了,但是现在的问题是当窗体最小化之后,再还原,窗体的statusStrip状态栏不见了,这个是bu……