EMDI는 지금도 개발중

C# : Text 안에 글과 그림 둘다 넣는 방법 richTextBox How to insert picture into textBox 본문

언어/C#

C# : Text 안에 글과 그림 둘다 넣는 방법 richTextBox How to insert picture into textBox

EMDI 2019. 5. 17. 11:10

이번 글에서는 제가 몇 시간 동안 고민을 한 부분을 한번에 해결해주었던 만능 텍스트박스 richTextBox 입니다. 블로그의 글에서는 현재 제가 작성하는 것과 같이 글과 그림을 동시에 같은 박스 안에 넣을 수가 있습니다. 제가 만드는 C# 블로그에도 그러한 텍스트 박스를 추가하고 싶은데 아무리해도 일반 TextBox는 사진을 첨부할 수 없더라고요ㅠㅠ 그러다가 richTextBox라는 도구를 알게 되었습니다.

 

richTextBox는 일반 TextBox와 겉보기는 다르지 않습니다. 다만, 확연히 다른점은 사진도 첨부할 수 있냐, 없냐이죠. 우선 사진을 첨부하기 위해 저는 OpenFileDialog(파일첨부)를 이용했습니다.

// 파일첨부 화면 불러오기 및 경로얻기
string image_Path = string.Empty; 
OpenFileDialog dialog = new OpenFileDialog();	// 파일 첨부 화면 생성자 
dialog.InitialDirectory = @"D:\";				// 파일 첨부 화면 로드 시, 디폴트 경로 

if (dialog.ShowDialog() == DialogResult.OK) 
{ 
	image_Path = dialog.FileName; 
}

 

파일 첨부 화면 불러오는 것은 매우 쉽습니다. 위와 같이 소스에서 OpenFileDialog생성자를 생성하고 원하는 사진을 선택하면 선택한 사진의 경로를 불러올 수 있습니다.

// 파일 정보 
string image_Path = string.Empty; 

OpenFileDialog dialog = new OpenFileDialog(); // 파일 첨부 화면 생성자 
dialog.InitialDirectory = @"D:\";             // 파일 첨부 화면 로드 시, 디폴트 경로 


if (dialog.ShowDialog() == DialogResult.OK) 
{ 
    image_Path = dialog.FileName; 
    if (string.IsNullOrEmpty(image_Path)) 
    { 
    	return; 
    } 
    
    Bitmap myBitmap = new Bitmap(image_Path); 
    Clipboard.SetDataObject(myBitmap); 
    DataFormats.Format myFormat = DataFormats.GetFormat(DataFormats.Bitmap); 
    if (newPostContent.CanPaste(myFormat)) 
    { 
        // 화면상에서 해당 이미지 붙여넣기 
        newPostContent.Paste(myFormat); 
    } 
    else 
    { 
    	GApplication.MessageBox("이미지를 첨부하는 중 오류가 발생하였습니다."); 
    } 
}

그 다음은 richTextBox에 해당 선택한 사진을 넣는 방법입니다. 저의 richTextBox의 Name은 newPostContent로 richTextBox에 사진을 넣으려면 비트맵으로 변환시켜야합니다.

Bitmap myBitmap = new Bitmap(image_Path); 
Clipboard.SetDataObject(myBitmap); 
DataFormats.Format myFormat = DataFormats.GetFormat(DataFormats.Bitmap); 
if (newPostContent.CanPaste(myFormat)) 
{ 
   // 화면상에서 해당 이미지 붙여넣기 
   newPostContent.Paste(myFormat); 
}

그럼 위의 사진과 같이 사진이 TextBox 안에 첨부되는 것을 확인할 수 있습니다.

Comments