图片的显示问题 picturebox中的图片我是取相对路径的图片,,但是当窗口最大化以后(写了控件随窗口变化改变的代码),picturebox改变了,但是里面的image就不能充分填充picturebox,应该怎么做才能实现充分填充注: 不要告诉我改picturebox的属性,不好用!谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不改属性怎么做呀?没法做,都是属性。将PictureBox对象的SizeMode设置成Zoom或StretchImage,图像就会随着框的大小改变。如果还是不行,就在PictureBox的Resize事件处理函数中,再设置一遍它的Image对象便是。 不改属性你想怎么做?在窗口最大化PictureBox随窗口变动后再设置下SizeMode,可能可以, 我的意思是说告诉我改变PictureBox的SizeMode属性,设置成StretchImage,这个不管用就是这意思 你在在PictureBox的Resize事件中,重新加载下这个图片就可以了。 是你图片没有那么大吧!设置下SizeMode试试... 不行,因为我有控件随窗口改变的代码,如果窗口最大化的时候,PictureBox变大了吧,但是PictureBox中取的image还是原来的图片大小,因为image图片是没有改变大小的 ,给我个实现思路就行,怎么能让图片充分填充PictureBox 楼主: private void setTag(Control cons) { foreach (Control con in cons.Controls) { // if (con is PictureBox) continue;这里注释掉 con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size; if (con.Controls.Count > 0) { setTag(con); } } } private void setConstrols(float newx, float newy, Control cons) { foreach (Control con in cons.Controls) { // if (con is PictureBox) continue;别忘了将这里注释掉 string[] mytag = con.Tag.ToString().Split(new char[] { ':' }); float a = Convert.ToSingle(mytag[0]) * newx; con.Width = (int)a; a = Convert.ToSingle(mytag[1]) * newy; con.Height = (int)(a); a = Convert.ToSingle(mytag[2]) * newx; con.Left = (int)(a); a = Convert.ToSingle(mytag[3]) * newy; con.Top = (int)(a); Single currentSize = Convert.ToSingle(mytag[4]) * newy; con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit); if (con.Controls.Count > 0) { setConstrols(newx, newy, con); } } }然后:this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;我在自己电脑上测试完全可以! 哥们,我知道这样做,但是我需要建立这PictureBox的点击事件,也就是说我click这PictureBox后,我需要实现变色,证明我点上了,变色我是让背景图片显示出来,这样就可以了,但是这时候就会出现我说的问题了,我还有什么别的办法么 你干吗不早说你的图片是背景图片?问题已解决: private void pictureBox1_Click(object sender, EventArgs e) { System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage"))); this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; }你最好还是不用背景图片,用pictureBox1.Image来回切换图片. pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage")));首先你通过浏览得到的图片都保存在 Form1.resx里面.其实你只要打开Form1.Designer.cs就会发现我其实就是按照这样的做法来的.你也可以这样做,打开Form1.resx,添加几张图片,点击图片的时候用pictureBox1.Image来切换,而不用BackgroundImage这样就完全没有你上面的问题了. 设计布局与实际布局不同,是怎么回事? 不知道是DataGridView问题还是TreeView问题.麻烦高手们帮我解答一下.实在是不明白. Invoke和InvokeRequired在哪儿定义? 很简单的问题,请高手指点一下!急! C#打印的问题 控件遍历问题 VS2010里c#窗体怎么运行flash文件 如果.net程序支持标准radius协议认证怎么做啊?????在线等,谢谢!!! 怎样自己颁发证书(*.cer),并让客户注册后自动下载证书 "检查是否有新版本”是如何实现的? dt.rows.count=0 AJAX级联目录示例问题
如果还是不行,就在PictureBox的Resize事件处理函数中,再设置一遍它的Image对象便是。
在窗口最大化PictureBox随窗口变动后再设置下SizeMode,可能可以,
就是这意思
不行,因为我有控件随窗口改变的代码,如果窗口最大化的时候,PictureBox变大了吧,但是PictureBox中取的image还是原来的图片大小,因为image图片是没有改变大小的 ,给我个实现思路就行,怎么能让图片充分填充PictureBox
private void setTag(Control cons)
{
foreach (Control con in cons.Controls)
{
// if (con is PictureBox) continue;这里注释掉
con.Tag = con.Width + ":" + con.Height + ":" + con.Left + ":" + con.Top + ":" + con.Font.Size;
if (con.Controls.Count > 0)
{
setTag(con);
}
}
}
private void setConstrols(float newx, float newy, Control cons)
{
foreach (Control con in cons.Controls)
{
// if (con is PictureBox) continue;别忘了将这里注释掉
string[] mytag = con.Tag.ToString().Split(new char[] { ':' });
float a = Convert.ToSingle(mytag[0]) * newx; con.Width = (int)a;
a = Convert.ToSingle(mytag[1]) * newy;
con.Height = (int)(a);
a = Convert.ToSingle(mytag[2]) * newx;
con.Left = (int)(a);
a = Convert.ToSingle(mytag[3]) * newy;
con.Top = (int)(a);
Single currentSize = Convert.ToSingle(mytag[4]) * newy;
con.Font = new Font(con.Font.Name, currentSize, con.Font.Style, con.Font.Unit);
if (con.Controls.Count > 0)
{
setConstrols(newx, newy, con);
}
}
}
然后:this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
我在自己电脑上测试完全可以!
问题已解决: private void pictureBox1_Click(object sender, EventArgs e)
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.BackgroundImage")));
this.pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
}
你最好还是不用背景图片,用pictureBox1.Image来回切换图片.
首先你通过浏览得到的图片都保存在 Form1.resx里面.其实你只要打开Form1.Designer.cs就会发现我其实就是按照这样的做法来的.你也可以这样做,打开Form1.resx,添加几张图片,点击图片的时候用pictureBox1.Image来切换,而不用BackgroundImage
这样就完全没有你上面的问题了.