0 c#
我有以下代码。我想在代码块之外使用 pictureBox1.Image = image,如下所示:
private void button1_Click(object sender, EventArgs e) {
using(MemoryStream memoryStream = new MemoryStream()) {
pic.Image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] imageBytes = memoryStream.ToArray();
}
Image image = Image.FromStream(memoryStream);
pictureBox1.Image = image;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:当前上下文中不存在名称“memoryStream”。我知道我可以执行以下操作,将最后两行移到括号中并且代码可以工作,但是如何在 { } 代码块之外使用变量
我知道下面的代码可以工作,但我只想知道是否有办法在代码块之外使用 pictureBox1.Image = image 。
private void button1_Click(object sender, EventArgs e)
{
using(MemoryStream memoryStream = new MemoryStream())
{
pic.Image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] imageBytes = memoryStream.ToArray();
Image image = Image.FromStream(memoryStream);
pictureBox1.Image = image;
}
}
Run Code Online (Sandbox Code Playgroud)
您不能也不应该在使用范围之外使用该流,之后它将被处置并且您不会遇到泄漏问题。
当您在作用域之前声明变量时,您可以在作用域之后分配值。
private void button1_Click(object sender, EventArgs e)
{
Image image;
using(MemoryStream memoryStream = new MemoryStream())
{
pic.Image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);
// byte[] imageBytes = memoryStream.ToArray(); //unused?
image = Image.FromStream(memoryStream);
}
pictureBox1.Image = image;
}
Run Code Online (Sandbox Code Playgroud)
或者更好的是创建一个函数来读取图像并返回它。
private void button1_Click(object sender, EventArgs e)
{
pictureBox1.Image = readImage();
}
private Image readImage()
{
using(MemoryStream memoryStream = new MemoryStream())
{
pic.Image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Bmp);
// byte[] imageBytes = memoryStream.ToArray(); //unused?
return Image.FromStream(memoryStream);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |