본문 바로가기

프로그래머의 꿈54

C#08. 메모리, 마우스 및 스크롤 이제 지금까지 만든 Paint 프로그램에 마우스를 이용하여 객체를 그리는 기능을 추가해보겠습니다. 객체를 그리는 방법은 두가지입니다. mspaint 처럼 Image에 직접 그림을 그려 그 그림을 저장하는 형태와 PhotoShop처럼 각 그리기 객체를 내부적으로 메모리를 관리하는 형태(Vector형태로 관리)가 있습니다. 여기서는 내부적으로 메모리를 관리하는 형태로 구성해보도록 하겠습니다. 프로젝트 이름에(여기서는 Paint) 마우스 오른쪽버튼을 눌러 생성된 팝업 메뉴의 추가의 부메뉴 클래스를 선택하면 다음과 같은 대화 상자가 생성됩니다. 이름에 DrawObj.cs를 입력하고 추가를 선택합니다. 같은 방식으로 DrawLine.cs, DrawRect.cs, DrawEllipse.cs, ObjList.cs를 .. 2022. 3. 8.
C#07. 대화상자 이제 대화 상자를 지원해보겠습니다. 프로그램은 메뉴 및 툴바에서 작성한 프로젝트(Paint)를 이용하겠습니다. 먼저 Paint프로젝트를 열고 대화 상자를 만들기위해 먼저 Form을 만듭니다. 프로젝트 명에서 우측버튼을 선택하여 생성된 메뉴에서 추가의 부메뉴 Windows Form을 선택하면 다음과 같은 대화 상자가 생성됩니다. Form1.cs를 작성하고자 하는 대화 상자 이름을 입력(여기서는 DialogTestDlg.cs)한 후 추가를 선택하면 Form이 생성됩니다. MainForm에서 TestDialog라는 메뉴을 하나 만들고 그 메뉴를 눌러 실행하는 함수에 다음과 같이 입력합니다. private void dialogTestToolStripMenuItem_Click(object sender, Event.. 2022. 3. 8.
C#06. GDI+ 및 깜박임 문제 해결 GDI+는 일반 Windows 프로그램에서 사용하던 GDI의 불편한 부분을 수정하여 만든 그래픽 라이브러리입니다. 이것은 GDI 보다 훨씬 많은 기능을 제공하고 있으나 여기서는 기본적으로 앞에서 만든 메뉴를 이용하여 선, 사각형, 원, 삼각형을 그리는 루틴을 만들어 보겠습니다. 나머지는 도움말을 보고 쉽게 사용할 수 있을 것입니다. 필자는 앞에서 작성한 MenuToolbar 프로젝트를 GDIPlus로 변경하여 작성했습니다. 그러나 가능하면 익숙해 질때까지 프로젝트를 새로 생성하여 작성하기 바랍니다. 참고로 이미 자료를 전혀 보지 않고 앞의 단계를 입력할 수 있는 분들을 위해 변경 방법을 설명해 보겠습니다. GDIPlus라는 디렉토리를 만들어 MenuToolbar의 파일(하위 디렉토리 제외)을 모두 복사하.. 2022. 3. 8.
C#05. 메뉴 및 툴바 지원 이제 메뉴와 툴바를 지원해봅시다. 메뉴와 툴바는 C++에 비해 약간 번거롭습니다. 이 번거로움은 구조를 깔끔하기 위해 Microsoft사에서 포기한 부분중 하나인 듯합니다. 그렇다고 엄청 복잡하것은 아니고, 또한 프로그램 만들때 한번하는 것이므로 하나씩 따라해 보기 바랍니다. 실제 프로그램 제작에서 설명한 방식으로 MenuToolbar라는 프로젝트를 만든후, 솔루션 탐색기에서 Form1.cs를 MenuToolbar.cs로 변경하고, 속성창에서 (Name)을 MainForm으로 Text를 메뉴 및 툴바로로 변경하며, Source에서 Form1을 MainForm으로 변경하여 제작합니다. MenuToolbar.cs 디자인을 선택하고 좌측 상단의 도구 상자에 마우스를 두면 화면에 다음과 같이 나타납니다. 메인 .. 2022. 3. 8.
C#04. 실제 프로그램 제작 실제 프로그램 제작 지금까지 어쩌면 먼길을 돌아 왔다. 이제 실제 프로그램 제작시 사용하는 방식으로 프로그램을 작성해 보겠습니다. Visual Studio .NET을 실행하여 파일 메뉴의 새로 만들기의 부메뉴 프로젝트를 선택하면 다음과 같은 대화 상자가 생성됩니다. 이제 Windows 응용 프로그램을 선택하고 이름을 적당히 입력(BaseProgram라고 입력)한 후 확인을 선택하면 다음과 같이 솔루션 탐색기에 프로젝트가 추가 됩니다. 솔루션 탐색기의 실제 소스 파일인 Form1.cs는 적당히 이름을 변경(여기서는 BaseProgram.cs)합니다. 참조를 펼쳐 보면 앞에서 설명한 것 보다 좀더 많은 어셈블리가 참조 되어 있다(참조는 많이 해도 사용하지 않으면 컴파일이 자동으로 무시되므로 상관없다). Ap.. 2022. 3. 8.
C#03. 기본 프로그램 제작 2 이제 Keyboard와 Mouse를 처리해 볼 것입니다. 기본 프로그램 제작 1에서 설명한 방식으로 빈프로젝트(EventTest)를 생성하고 참조를 한 후, 코드 파일을 생성하여 다음과 같이 입력해봅시다. using System; using System.Windows.Forms; class EventTest { public static void Main() { Form form = new Form(); form.Text = "FormTest"; form.MouseDown += new MouseEventHandler(ExeMouseDown); form.KeyDown += new KeyEventHandler(ExeKeyDown); Application.Run(form); } static void ExeMou.. 2022. 3. 8.