2023. 1. 21. 23:35ㆍ프로그램개발/WinForms C#
안녕하세요~ totally 개발자입니다.
오늘은 WinForms C#으로 가사 텍스트를 파워포인트 슬라이드로 나눠서 변환해주는 프로그램을 만들어보려고 합니다. 제가 개인적으로 교회 방송실을 하면서 찬양 가사를 급하게 파워포인트로 출력해야 할 때 제작의 필요성을 많이 느꼈습니다. 그 이유는 타이핑이나 가사를 2-3줄씩 각각 복사해서 슬라이드에 있는 텍스트 상자에 붙여 넣는 것이 의외로 시간이 걸리기 때문입니다. 그래서 직접 개발을 해보기로 결심하고 그 과정을 아래에 남깁니다.
Step 1: Visual Studio 설치 (비주얼 스튜디오를 설치하시고 Windows Forms C#를 사용할 수 있도록 선택 옵션에서 설치하시면 됩니다.
Step 2: 아래에서 Windows Forms 앱을 선택하시면 되며 .NET 6.0으로 저는 선택하고 넘어갔습니다.
Step 3: 오른쪽 솔루션 탐색기의 WinFormPowerPoint에 마우스 우클릭합니다.
Step 4: 추가(D) -> COM 참조(C)를 누릅니다.
Step 5: 저는 Microsoft Office Excel, Graph, Word도 선택했는데 아래 2개 정도만 체크해주고 아래 확인 버튼 눌러주시면 됩니다.
Step 6: 보기 -> 도구 상자(X)를 눌러줍니다.
Step 7: 그러면 왼쪽에 도구 상자가 생기며 이 도구 상자에서 드래그 앤 드롭으로 필요한 것을 추가하면 됩니다.
Step 8: 저는 아래처럼 구성했습니다. Label, RichTextBox, Button입니다.
Step 9: 레이아웃에 마우스 우클릭 하시면 속성(R)이 나오는데, 속성을 눌러줍니다. 이 속성에서 크기, 디자인, 이름 등을 모두 수정할 수 있습니다.
우측 하단에서 수정 가능합니다.
Step 10: 위에 있는 '생성하기' 버튼을 더블 클릭해서 C# Click 메소드를 만들어주고 C# 코드 부분으로 가줍니다.
그러면 위와 같이 private void button1_Click(object sender, EventArgs e) 코드가 생성된 것을 확인할 수 있습니다. 이제 코드를 작성해보도록 하겠습니다. 먼저 맨 위에 다음 3줄을 추가해주었습니다.
다음으로 가사 변수를 선언했습니다. 노래 찬양 가사를 받아올 것이기 때문에 Form으로부터 Text를 받아옵니다. 저는 Step 9에서 설명드린 속성에서 RichBoxText의 Name을 lyricText로 변경하였습니다.
그리고 파워포인트 인스턴스를 생성 및 추가해주면 됩니다.
슬라이드 변수 선언해주고 슬라이드 배경을 검정색으로 해줄 수 있도록 변수로 지정합니다.
빈 줄을 분리할 수 있게 아래처럼 Split하여 배열로 구성했습니다. 예를 들어 아래와 같이 담기게 됩니다.
"안녕하세요
반갑습니다
지금은 예제를 보여
드리고 있습니다"
이렇게 있을 때 ["안녕하세요\n반갑습니다", "지금은 예제를 보여\n드리고 있습니다"] 이런 방식으로 2개로 분리되게 됩니다.
이 배열을 근거로 하여 슬라이드를 추가해가며 가사를 분리하여 만들어줄 수 있습니다. 아래 주석을 참고하시면 됩니다.
이제 실행해서 결과를 보여드리도록 하겠습니다. 아래처럼 "은혜"라는 찬양의 가사 일부를 복사해서 붙여넣고 '생성하기' 버튼을 눌러보았습니다.
아래처럼 파워포인트 슬라이드로 잘 생성되어 만들어진 것을 확인해보실 수 있습니다.
아래에 전체 소스 코드를 첨부하니 참고하시면 됩니다. 감사합니다.
[전체 소스 코드]
using PowerPoint = Microsoft.Office.Interop.PowerPoint;
using MsoTriState = Microsoft.Office.Core.MsoTriState;
using Microsoft.Office.Interop.PowerPoint;
namespace WinFormPowerPoint
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// 가사 변수 초기화
string text = lyricText.Text;
// 파워포인트 인스턴스 생성 및 추가
PowerPoint.Application objApp = new PowerPoint.Application();
PowerPoint._Presentation objPres = objApp.Presentations.Add(MsoTriState.msoTrue);
objApp.Visible = MsoTriState.msoTrue;
// 슬라이드 변수 선언
PowerPoint.Slides objSlides = objPres.Slides;
// 슬라이드 배경 검정색으로 변수 지정
Color backgroundColor = Color.Black;
// 빈 줄이 있을 때 text를 배열 element로 분리
string[] textArr = text.Split(new[] { "\n\n" }, StringSplitOptions.RemoveEmptyEntries);
for (int i = textArr.Length - 1; i >= 0; i--)
{
// 슬라이드 새로 추가
PowerPoint._Slide objSlide = objSlides.Add(1, PpSlideLayout.ppLayoutBlank);
// 슬라이드 배경 검정색으로 설정
objSlide.FollowMasterBackground = MsoTriState.msoFalse;
objSlide.Background.Fill.ForeColor.RGB = backgroundColor.ToArgb();
// 슬라이드에 텍스트 상자 추가 및 스타일 지정
objSlide.Shapes.AddTextbox(Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal, 10, 215, 940, 100);
PowerPoint.TextRange objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
objTextRng.Text = textArr[i];
objTextRng.Font.Size = 50;
objTextRng.Font.Color.RGB = Color.White.ToArgb();
objTextRng.Font.Bold = MsoTriState.msoTrue;
objTextRng.ParagraphFormat.Alignment = PpParagraphAlignment.ppAlignCenter;
}
}
}
}
'프로그램개발 > WinForms C#' 카테고리의 다른 글
[002] WinForms C# 파워포인트 슬라이드 16대 9 비율로 변환하기 (0) | 2023.01.23 |
---|