반응형
아래 구문은 PictureBox 컨트롤에 이미지를 표시하기 위한 방법 중 가장 쉽기 때문에 일반적으로 많이 사용되는 방식이다. 하지만, 이러한 방식은 파일을 PictureBox가 점유하고 있기 때문에 삭제나 이동에 문제가 발생한다.
pictureBox.Image = Image.FromFile(file_name);
메모리스트림을 이용하여 로딩하면 위와 같은 문제없이 이미지를 표시할 수 있다.
pictureBox.Image = LoadBitmap(@"d:\directory\file_name.jpg");
/// <summary>
/// 비트맵이미지를 메모리스트림으로 로딩
/// </summary>
/// <param name="file_name"></param>
/// <returns></returns>
public Bitmap LoadBitmap(string file_name)
{
if (System.IO.File.Exists(file_name))
{
// 파일을 읽기 전용으로 오픈한다.
using (System.IO.FileStream stream = new System.IO.FileStream(file_name, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
// FileStream으로부터 BinaryReader를 구한다.
using (System.IO.BinaryReader reader = new System.IO.BinaryReader(stream))
{
// 파일의 내용을 MemoryStream으로 복사한다.
var memoryStream = new System.IO.MemoryStream(reader.ReadBytes((int)stream.Length));
// MemoryStream을 Bitmap으로 만들어 반환한다.
return new Bitmap(memoryStream);
}
}
}
else
{
MessageBox.Show("이미지를 찾을 수 없습니다.", "이미지 로딩", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
return null;
}
}
반응형
'윈도우프로그래밍' 카테고리의 다른 글
[C#] ZedGraph 에서 Logarithmic Scale 주파수 축에 대한 시작 / 종료 주파수를 항상 나타나게 하는 방법 (0) | 2020.08.24 |
---|---|
[C#] 반복루프를 사용하지 않고 배열 및 리스트의 각 원소를 연산하는 방법 (0) | 2020.08.23 |
[C#] 구조체 리스트 항목 검색하기 (0) | 2020.06.26 |
[VB] 구조체 리스트 항목 검색하기 (0) | 2020.06.26 |
Visual Studio 2017 탐색 모음 표시 (2) | 2018.11.14 |
Visual Studio Installer HRESULT -2147024769 에러 해결방법 (0) | 2018.06.07 |
"Resources" 매개 변수에 두 번 이상 지정했습니다. 오류 (0) | 2018.05.24 |
[C#] DataGridView의 ComboBoxColumn 값이 변경된 후 이벤트 처리하기 (0) | 2018.03.19 |