NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • NGM 6
  • 매뉴얼

    NGM 6

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    디자이너 디자이너에서 아웃풋(로그) 보는 방법.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 리셀러가 아닌 경우 디자이너를 사용할일이 없을텐데요. 자신이 만든 스크립트를 좀 더 이쁘고 멋있게 포장하거나 기능을 확장할 때 디자이너를 사용합니다. 엔지엠이 아닌 자신만의 플레이어를 판매하고 싶은 경우에 사용하는거죠^^; 꼭 이런 이유가 아니더라도 여러가지 디자이너를 사용해야 하는 필요성이 있기도 합니다. 별도의 인증 방법이나 우회 또는 제약을 줄 수 있기 때문입니다. 오늘은 디자이너를 개발하면서 동작에 대한 문제를 파악하기 위한 아웃풋 출력에 대해 알아보도록 하겠습니다.

    ewXBv80.jpg

     

     

    이전 내용들을 잘 따라오셨다면, 이 내용도 크게 어렵지는 않을겁니다. 우선, 비주얼 스튜디오를 실행하고 MyPlayer 프로젝트를 불러오세요. 불필요하게 폼이 크니 좀 줄여주도록 하겠습니다. 아래와 같이 ①폼을 클릭한 후 Alt+Enter(속성)를 누르세요. 그리고, ②사이즈를 그림과 같이 조정한 후 F5(실행)를 눌러서 실행하세요.

    YvpkLpN.png

     

     

    플레이어가 조정한 사이즈로 작아진 것을 확인할 수 있습니다. 이제 이 글의 핵심 내용인 로그를 출력하기 위한 준비를 해야겠죠? 속성창에서 NGM Output의 속성들을 모두 True로 변경합니다. 이 값들은 엔지엠 에디터의 보기 메뉴에 있는 항목과 동일합니다. 에디터를 사용해본 분들은 금방 어떤 내용인지 이해할 수 있을겁니다^^;

    Mn8vPsh.png

     

     

    아웃풋 내용을 화면에 표시할 RichTextBox 콘트롤을 하나 추가한 후 위치 및 사이즈를 적절하게 조정하세요.

    1. 도구 상자의 검색에 "RichTextBox"를 입력하세요.
    2. Windows Forms 카테고리에 있는 RichTextBox를 선택한 후 폼 디자인에 드래그 앤 드롭으로 추가합니다.
    3. 위치와 사이즈를 적절하게 조정하세요.

    UdWp1jt.png

     

     

    F7을 눌러서 소스 보기로 이동하세요.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace MyPlayer
    {
        public partial class Form1 : Designer.ComponentDefault.MainView
        {
            public Form1()
            {
                InitializeComponent();
    
                IsOutput = true;
            }
    
            public override void WriteOutput(string message)
            {
                richTextBox1.AppendText(message);
                richTextBox1.AppendText(Environment.NewLine);
            }
        }
    }

     

    IsOutput을 true로 설정해주세요. 이 속성이 true로 되어 있어야 아웃풋(로그)을 받아볼 수 있습니다. 하단에 있는 WriteOutput 메소드는 아웃풋 메시지를 표시하는 역할을 합니다. 상속받은 MainView의 메소드를 제정의 합니다. 이제 실행(F5) 해보세요. 아래 그림과 같이 "크로스 스레드 작업이 잘못되었습니다." 에러가 발생합니다.

    97iUyeq.png

     

     

    이 에러가 발생하는 이유는 스크립트를 실행하는 스레드에서 UI 스레드에 접근하기 때문에 발생되는 문제입니다. 아래와 같이 코드를 수정한 후 다시 해보세요. 코드에 대해 설명해야 할 부분이 많지만, 프로그래밍 강의는 아니라서 그냥 넘어가도록 하겠습니다. 디자이너로 플레이어를 제작하다가 자주 만나는 문제일텐데요. 이 때에는 해당 컨트롤의 인보크로 대리자에게 위임하면 됩니다.

            public override void WriteOutput(string message)
            {
                richTextBox1.Invoke((Action)delegate
                {
                    richTextBox1.AppendText(message);
                    richTextBox1.AppendText(Environment.NewLine);
                });
            }

     

    스크립트가 실행되고, 딥러닝으로 분석한 결과를 로그에서 확인할 수 있습니다.

    7fKfvec.gif

     

     

    전체 내용은 아래와 같습니다. 아웃풋에 출력된 내용을 잘 보면, 어떻게 스크립트가 실행되었는지 결과를 확인할 수 있습니다. 이번 스크립트는 에러가 발생하지 않았기 때문에 아웃풋을 보고 무언가 파악할만한 내용은 없지만, 스크립트가 동작하다가 에러가 발생하면 여기서 확인할 수 있습니다.

    [디자이너 예제 3.ngs] 스크립트가 시작되었습니다.
    마우스 좌표 목록: System.Drawing.Point[]{X=522,Y=493}{X=610,Y=497}{X=712,Y=495}{X=785,Y=492}
    이미지 정보 목록: System.Drawing.Rectangle[]{X=504,Y=472,Width=36,Height=44}{X=589,Y=473,Width=43,Height=48}{X=691,Y=474,Width=43,Height=43}{X=769,Y=464,Width=34,Height=58}
    매치 스코어: System.Double[]0.817585766315460.881237447261810.8652175664901730.863529145717621
    분류 이름: System.String[]updownleftup
    배열 수: 4
    매인 윈도우 정보: {X=0,Y=0,Width=0,Height=0}
    콘트롤 윈도우 정보: {X=0,Y=0,Width=0,Height=0}
    이미지 텍스트 결과: 
    마우스 좌표: {X=0,Y=0}
    이미지 정보: {X=0,Y=0,Width=0,Height=0}
    
    
    [디자이너 예제 3.ngs] 스크립트가 완료되었습니다.
    

     

    아웃풋 내용이 추가될때마다 스크롤을 자동으로 내리고 싶다면, 아래와 같이 코드를 수정해주면 됩니다.

            public override void WriteOutput(string message)
            {
                richTextBox1.Invoke((Action)delegate
                {
                    richTextBox1.AppendText(message);
                    richTextBox1.AppendText(Environment.NewLine);
                    richTextBox1.ScrollToCaret();
                });
            }

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천1 비추천0

    댓글목록

    등록된 댓글이 없습니다.