您的位置:首页 > 编程语言 > C#

C# - 让窗口随图片自动改变大小

2012-08-07 16:17 441 查看

任务

实现一个简单图片查看工具,可在窗口中显示选定的图片,并且窗口大小随图片自动改变。

效果图

打开小图片:





打开大图片:





关键代码

控件

图片控件PictureBox。让它显示指定的图片:

pictureBox1.Image = Image.FromFile(filename);


.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

选择图片文件,使用OpenFileDialog,通过Filter指定可显示哪些后缀的文件:

var dialog = new OpenFileDialog();
dialog.Filter = "图片(*.jpg/*.png/*.gif/*.bmp)|*.jpg;*.png;*.gif;*.bmp";


.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

布局

设置Dock

窗口中有两个控件,一个PictureBox用于显示图片,一个Button用于选择图片。通地设置它们的Dock,可以让它们始终依靠在父容器的某一边,不论它如何改变大小。

PictureBox的Dock选择Fill,如下图:





Button的Dock选择Bottom:





设完以后,窗口就变成了这样:





设置AutoSize

PictureBox的SizeMode都设为AutoSize:





窗口的AutoSize设为True,AutoSizeMode设为GrowAndShrink(增大或缩小):





这样它们都会根据自己的内容,改变自己的大小了。

完整代码

大功告成,完整代码如下:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1 {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e) {
var dialog = new OpenFileDialog(); dialog.Filter = "图片(*.jpg/*.png/*.gif/*.bmp)|*.jpg;*.png;*.gif;*.bmp";
if (dialog.ShowDialog() == DialogResult.OK) {
var filename = dialog.FileName;
pictureBox1.Image = Image.FromFile(filename);
}
}
}
}


.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: