<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Life is Dynamic</title>
    <link>https://crynut84.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 22 May 2026 06:12:34 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>맨날맑음</managingEditor>
    <image>
      <title>Life is Dynamic</title>
      <url>https://t1.daumcdn.net/cfile/tistory/181C75184C89B5B656</url>
      <link>https://crynut84.tistory.com</link>
    </image>
    <item>
      <title>리플렉션을 이용한 동적 코드 생성</title>
      <link>https://crynut84.tistory.com/78</link>
      <description>&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;안녕하세요? 맨날맑음입니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;닷넷의 리플렉션(Reflection)을 이용하면 어셈블리의 메터데이터 정보를 알아올 수 있고, 이를 이용해 지연바인딩(Lazy Binding)이나 동적으로 코드를 생성할 수 있습니다. 이번 포스팅에서는 리플렉션을 이용한 동적 코드생성에 대해 알아 보도록 하겠습니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;간단한 예제를 통해 동적 코드생성에 대해 알아 볼 텐데요. 예제는 어셈블리를 동적으로 생성/실행하는 콘솔어플리케이션 프로젝트(App)와, 동적으로 코드를 생성하는 클래스 라이브러리 프로젝트(CodeGenerator)로 구성 됩니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/156206194CCE599D8B&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;CodeGenerator 클래스에서는 동적으로 DynamicAssembly를 생성하고, DynamicClass, DynamicMethod를 만들어 그 안에 &quot;Dynamic Method Call&quot;이라는 메시지를 프린트하는 코드를 작성하게 만들도록 하겠습니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;OL style=&quot;MARGIN-LEFT: 38pt&quot;&gt;
&lt;LI&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;파일 -&amp;gt; 새로 만들기 -&amp;gt; 프로젝트를 선택하여 빈 솔루션을 생성합니다. &lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;솔루션 탐색기의 솔루션 탭을 마우스 오른쪽 클릭하여, 콘솔어플리케이션 프로젝트(App)와 클래스라이브러리 프로젝트(CodeGenerator)를 생성합니다. &lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;Programe.cs 와 Class1.cs의 이름을 각각 App와 CodeGenerator로 변경합니다. &lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/17611B184CCE59A0B1&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; COLOR: #c00000; FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;#1. CodeGenerator 클래스 작성 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;CodeGenerator.cs에 다음의 코드를 입력합니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;class&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;CodeGenerator&lt;/SPAN&gt;
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;Type&lt;/SPAN&gt;&amp;nbsp;DynamicType&amp;nbsp;{&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;get&lt;/SPAN&gt;;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;private&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;set&lt;/SPAN&gt;;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;public&lt;/SPAN&gt;&amp;nbsp;CodeGenerator()
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//현재&amp;nbsp;어플리케이션&amp;nbsp;도매인을&amp;nbsp;가져온다.&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;AppDomain&lt;/SPAN&gt;&amp;nbsp;currentDomain&amp;nbsp;=&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;AppDomain&lt;/SPAN&gt;.CurrentDomain;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//생성하려는&amp;nbsp;어셈블리의&amp;nbsp;이름을&amp;nbsp;설정한다.&lt;br /&gt;

&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;AssemblyName&lt;/SPAN&gt;&amp;nbsp;assemName&amp;nbsp;=&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;new&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;AssemblyName&lt;/SPAN&gt;(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;DynamicAssembly&quot;&lt;/SPAN&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//어셈블리를&amp;nbsp;생성&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;AssemblyBuilder&lt;/SPAN&gt;&amp;nbsp;assemBuilder&amp;nbsp;=&amp;nbsp;currentDomain.DefineDynamicAssembly(assemName,&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;AssemblyBuilderAccess&lt;/SPAN&gt;.Run);&lt;br /&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//모듈&amp;nbsp;생성&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;ModuleBuilder&lt;/SPAN&gt;&amp;nbsp;moduleBuilder&amp;nbsp;=&amp;nbsp;assemBuilder.DefineDynamicModule(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;DynamicModule&quot;&lt;/SPAN&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//클래스&amp;nbsp;생성&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;TypeBuilder&lt;/SPAN&gt;&amp;nbsp;typeBuilder&amp;nbsp;=&amp;nbsp;moduleBuilder.DefineType(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;DynamicClass&quot;&lt;/SPAN&gt;,&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;TypeAttributes&lt;/SPAN&gt;.Public);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//메서드&amp;nbsp;생성&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;MethodBuilder&lt;/SPAN&gt;&amp;nbsp;methodBuilder&amp;nbsp;=&amp;nbsp;typeBuilder.DefineMethod(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;DynamicMethod&quot;&lt;/SPAN&gt;,&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;MethodAttributes&lt;/SPAN&gt;.Public,&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;null&lt;/SPAN&gt;,&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;null&lt;/SPAN&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//동적&amp;nbsp;코드&amp;nbsp;생성&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;ILGenerator&lt;/SPAN&gt;&amp;nbsp;msil&amp;nbsp;=&amp;nbsp;methodBuilder.GetILGenerator();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;msil.EmitWriteLine(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;Dynamic&amp;nbsp;Method&amp;nbsp;Call&quot;&lt;/SPAN&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;msil.Emit(&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;OpCodes&lt;/SPAN&gt;.Ret);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//타입&amp;nbsp;정보&amp;nbsp;저장&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;     DynamicType&amp;nbsp;=&amp;nbsp;typeBuilder.CreateType();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;

&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;}
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;DynamicType이라는 필드가 있고, 이 필드는 동적으로 생성 할 Class의 Type을 저장하는 용도로 쓰입니다. 생성자에서는 동적으로 코드를 생성하기 위한 단계를 진행하는데요. 어셈블리-&amp;gt;모듈-&amp;gt;클래스-&amp;gt;메서드-&amp;gt;코드 생성의 단계로 진행을 하게 됩니다. 마지막에 보이는 ILGenerator 클래스를 이용하여 msil코드를 생성 할 수 있게 됩니다. 예제에서는 간단히 EmitWriteLine 메서드를 이용하여 &quot;Dynamic Method Call&quot;이라는 문자열을 화면에 뿌리는 코드를 생성 하였습니다.
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; COLOR: #c00000; FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;#2. App 클래스 작성 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;App프로젝트로에서 CodeGenerator 프로젝트를 참조 추가 합니다.
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/175CFC154CCE59A463&quot; /&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: Calibri; FONT-SIZE: 10pt&quot;&gt;
				&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;App.cs 에 다음의 코드를 추가합니다.
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;class&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;App&lt;/SPAN&gt;
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;static&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;void&lt;/SPAN&gt;&amp;nbsp;Main(&lt;SPAN style=&quot;COLOR: blue&quot;&gt;string&lt;/SPAN&gt;[]&amp;nbsp;args)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//CodeGenerator클래스&amp;nbsp;생성&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CodeGenerator.&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;CodeGenerator&lt;/SPAN&gt;&amp;nbsp;codeGenerator&amp;nbsp;=&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;new&lt;/SPAN&gt;&amp;nbsp;CodeGenerator.&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;CodeGenerator&lt;/SPAN&gt;();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//동적으로&amp;nbsp;추가&amp;nbsp;한&amp;nbsp;Type을&amp;nbsp;얻어옴&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;Type&lt;/SPAN&gt;&amp;nbsp;DynamicType&amp;nbsp;=&amp;nbsp;codeGenerator.DynamicType;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//Activator&amp;nbsp;클래스를&amp;nbsp;이용하여&amp;nbsp;인스턴스&amp;nbsp;생성&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;object&lt;/SPAN&gt;&amp;nbsp;obj&amp;nbsp;=&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;Activator&lt;/SPAN&gt;.CreateInstance(DynamicType);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//동적으로&amp;nbsp;생성한&amp;nbsp;메소드를&amp;nbsp;얻어옴&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;MethodInfo&lt;/SPAN&gt;&amp;nbsp;methodInfo&amp;nbsp;=&amp;nbsp;DynamicType.GetMethod(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;DynamicMethod&quot;&lt;/SPAN&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//실행&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;methodInfo.Invoke(obj,&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;null&lt;/SPAN&gt;);&lt;br /&gt;

&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;Main메서드의 로직은 간단합니다. 우선 CodeGenerator 클래스의 public 필드인 DynamicType에서 동적으로 생성한 Class의 Type을 얻어옵니다. Activator 클래스를 이용하여 클래스의 인스턴스를 생성하고, MethodInfo 클래스로 미리 생성한 DynamicMethod를 얻어와 실행합니다.
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;실행결과는 Dynamic Method Call이 나오면 의도한 결과이겠죠?
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1665B4154CCE59A752&quot; /&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: Calibri; FONT-SIZE: 10pt&quot;&gt;
				&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;이상 동적으로 코드를 생성하고, Reflection을 이용하여 동적으로  인스턴스를 생성 / 실행하는 방법이었습니다. 
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;감사합니다.
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/1144B7114CCE5C5438&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/unknown.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;ReflectionSample.rar&lt;/a&gt;&lt;/div&gt;
&lt;/P&gt;
&lt;P&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 10pt&quot;&gt;소스코드 빌드 환경 : Windows7 x64, Visual Studio2010, .NET Framwork4.0&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <category>.NET/Visual C#</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/78</guid>
      <comments>https://crynut84.tistory.com/78#entry78comment</comments>
      <pubDate>Mon, 1 Nov 2010 15:09:45 +0900</pubDate>
    </item>
    <item>
      <title>실버라이트와 HTML 엑세스 하기</title>
      <link>https://crynut84.tistory.com/77</link>
      <description>&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;안녕하세요? 맨날맑음입니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/122969304CA9DFB537&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;일반적으로 실버라이트 프로젝트를 생성하면 위와 같이 &lt;STRONG&gt;두 개의 프로젝트가 생성&lt;/STRONG&gt;됩니다. 하나는 실버라이트 프로젝트이고, 하나는 [프로젝트명].[Web]이 붙은 프로젝트인데요. Web이 붙은 프로젝트를 살펴보면 ASP.NET 프로젝트 인 것을 알 수 있습니다. 웹 프로젝트의 .aspx(웹폼)의 소스를 살펴보면 Active-X 처럼 object 태그를 이용하여 실버라이트를 웹 페이지에 로딩하는 것을 볼 수 있습니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/203ECC324CA9DFB618&quot; width=&quot;707&quot; height=&quot;448&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;이와 같이 실버라이트는 웹에서 동작하는 응용프로그램이고, 프로젝트의 상황에 따라 전체 페이지를 실버라이트로 만들 수도 있지만, ASP.NET으로 웹 페이지를 구성하고, 비주얼한 영역만 실버라이트로 제작하는 것이 일반적입니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;이렇게 실버라이트를 웹 페이지의 특정 영역에 올려놓을 &lt;STRONG&gt;경우 실버라이트와 HTML간의 정보교환이라는 이슈&lt;/STRONG&gt;가 생기기 마련인데요. 이번 포스팅에서는 &lt;STRONG&gt;실버라이트 &amp;lt;-&amp;gt; HTML 간의 엑세스 방법&lt;/STRONG&gt;에 대해 알아보려 합니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; BACKGROUND: #c2d69b&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 100%&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;&lt;STRONG&gt;#1. 실버라이트에서 HTML 접근&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;우선 실버라이트에서 HTML의 요소에 접근하는 방법을 알아 보기 위해서, 간단하게 HTML과 실버라이트에 컨트롤을 배치합니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/172FA82F4CA9DFB673&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;위쪽의 흰색 배경이 HTML영역이고 아래쪽에 푸른 배경이 실버라이트 영역입니다. 위쪽 HTML영역의 글을 텍스트박스에 입력하고, &lt;STRONG&gt;Silverlight 영역의 버튼을 누르면 HTML의 정보를 실버라이트 텍스트박스에 넣는 시나리오&lt;/STRONG&gt; 입니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; BACKGROUND: #daeef3&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 100%&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: 0.5pt solid; BORDER-RIGHT: 0.5pt solid&quot; vAlign=center&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;UserControl&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;x&lt;SPAN style=&quot;COLOR: blue&quot;&gt;:&lt;SPAN style=&quot;COLOR: red&quot;&gt;Class&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;HTMLBridge.MainPage&quot;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;xmlns&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;xmlns&lt;SPAN style=&quot;COLOR: blue&quot;&gt;:&lt;SPAN style=&quot;COLOR: red&quot;&gt;x&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;xmlns&lt;SPAN style=&quot;COLOR: blue&quot;&gt;:&lt;SPAN style=&quot;COLOR: red&quot;&gt;d&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;xmlns&lt;SPAN style=&quot;COLOR: blue&quot;&gt;:&lt;SPAN style=&quot;COLOR: red&quot;&gt;mc&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;StackPanel&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;x&lt;SPAN style=&quot;COLOR: blue&quot;&gt;:&lt;SPAN style=&quot;COLOR: red&quot;&gt;Name&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;LayoutRoot&quot;&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;Background&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;Azure&quot;&amp;gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;TextBlock&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;FontSize&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;14&quot;&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;Text&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;Silverlight&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕&quot;&gt;영역&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&quot;/&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&lt;br /&gt;
&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;StackPanel&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;Orientation&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;Horizontal&quot;&amp;gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;TextBox&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;x&lt;SPAN style=&quot;COLOR: blue&quot;&gt;:&lt;SPAN style=&quot;COLOR: red&quot;&gt;Name&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;txtHTML&quot;&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;Width&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;400&quot;&amp;nbsp;/&amp;gt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;Button&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;x&lt;SPAN style=&quot;COLOR: blue&quot;&gt;:&lt;SPAN style=&quot;COLOR: red&quot;&gt;Name&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;btnGetHTML&quot;&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Content&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕&quot;&gt;버튼을&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕&quot;&gt;누르면&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;nbsp;HTML&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕&quot;&gt;에&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕&quot;&gt;접근&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&quot;&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Margin&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;10,0,0,0&quot;&lt;SPAN style=&quot;COLOR: red&quot;&gt;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Click&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;btnGetHTML_Click&quot;&amp;nbsp;/&amp;gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;/&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;StackPanel&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;/&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;StackPanel&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;/&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;UserControl&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;-MainPage.xaml- &lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; BACKGROUND: #daeef3&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 100%&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: 0.5pt solid; BORDER-RIGHT: 0.5pt solid&quot; vAlign=center&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;partial&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;class&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;MainPage&lt;/SPAN&gt;&amp;nbsp;:&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;UserControl&lt;/SPAN&gt;&lt;br /&gt;
&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;public&lt;/SPAN&gt;&amp;nbsp;MainPage()&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;private&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;void&lt;/SPAN&gt;&amp;nbsp;btnGetHTML_Click(&lt;SPAN style=&quot;COLOR: blue&quot;&gt;object&lt;/SPAN&gt;&amp;nbsp;sender,&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;RoutedEventArgs&lt;/SPAN&gt;&amp;nbsp;e)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;HtmlDocument&lt;/SPAN&gt;&amp;nbsp;htmlDocument&amp;nbsp;=&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;HtmlPage&lt;/SPAN&gt;.Document;&lt;/STRONG&gt;&lt;br /&gt;
&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;HtmlElement&lt;/SPAN&gt;&amp;nbsp;htmlElement&amp;nbsp;=&lt;/STRONG&gt;&amp;nbsp;&lt;STRONG&gt;htmlDocument.GetElementById(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;htmlInputBox&quot;&lt;/SPAN&gt;);&lt;br /&gt;
&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;string&lt;/SPAN&gt;&amp;nbsp;text&amp;nbsp;=&amp;nbsp;htmlElement.GetAttribute(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;value&quot;&lt;/SPAN&gt;);&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;if&lt;/SPAN&gt;(text!=&lt;SPAN style=&quot;COLOR: blue&quot;&gt;null&lt;/SPAN&gt;)&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;this&lt;/SPAN&gt;.txtHTML.Text&amp;nbsp;=&amp;nbsp;text;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;-MainPage.xaml.cs- &lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; BACKGROUND: #daeef3&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 100%&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: 0.5pt solid; BORDER-RIGHT: 0.5pt solid&quot; vAlign=center&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;form&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;id&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;form1&quot;&lt;/SPAN&gt;&amp;nbsp;runat&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;server&quot;&lt;/SPAN&gt;&amp;nbsp;style&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;&lt;SPAN style=&quot;COLOR: red&quot;&gt;height&lt;SPAN style=&quot;COLOR: blue&quot;&gt;:100%&quot;&amp;gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;h2&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;gt;&lt;/SPAN&gt;HTML&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕&quot;&gt;영역&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;lt;/&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;h2&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕&quot;&gt;텍스트&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕&quot;&gt;입력&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;nbsp;:&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;input&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;type&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;text&quot;&lt;/SPAN&gt;&amp;nbsp;id&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;htmlInputBox&quot;&lt;/SPAN&gt;&amp;nbsp;style&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;&lt;SPAN style=&quot;COLOR: red&quot;&gt;width&lt;SPAN style=&quot;COLOR: blue&quot;&gt;:400px;&quot;&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;/&amp;gt;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;hr&lt;/SPAN&gt;&amp;nbsp;/&amp;gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;div&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;id&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;silverlightControlHost&quot;&amp;gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;object&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;data&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;data:application/x-silverlight-2,&quot;&lt;/SPAN&gt;&amp;nbsp;type&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;application/x-silverlight-2&quot;&lt;/SPAN&gt;&amp;nbsp;width&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;100%&quot;&lt;/SPAN&gt;&amp;nbsp;height&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;100%&quot;&amp;gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; COLOR: blue; FONT-SIZE: 10pt&quot;&gt;……&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;-HTMLBridgeTestPage.aspx- &lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;XAML에는 컨트롤의 배치가 선언 되어있고 btnGetHTML이라는 이름을 가진 버튼의 Click이벤트 핸들러가 정의되어 있습니다.비하인드 코드가 중요한데요. &lt;STRONG&gt;HtmlDocument&lt;/STRONG&gt; 객체를 가져와서 &lt;STRONG&gt;GetElementById&lt;/STRONG&gt; 메서드를 이용하여 HTML의 텍스트박스를 얻어 올 수 있습니다. HtmlElement 객체의 GetAttribute는 HTML요소의 속성값을 읽어 올 수 있습니다. 또한 &lt;STRONG&gt;SetProperty&lt;/STRONG&gt;와 &lt;STRONG&gt;SetAttribute&lt;/STRONG&gt; 메서드를 이용하여 값을 설정 할 수 있습니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/206269104CA9DFB765&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;실행시켜 보면 위와 같은 결과를 얻을 수 있습니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;또한 HTML의 이벤트도 실버라이트에서 컨트롤 할 수 있는데요. &lt;STRONG&gt;AttachEvent&lt;/STRONG&gt;메서드를 이용하면 됩니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; BACKGROUND: #daeef3&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 100%&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: 0.5pt solid; BORDER-RIGHT: 0.5pt solid&quot; vAlign=center&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;public&lt;/SPAN&gt;&amp;nbsp;MainPage()
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;HtmlDocument&lt;/SPAN&gt;&amp;nbsp;htmlDocument&amp;nbsp;=&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;HtmlPage&lt;/SPAN&gt;.Document;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;HtmlElement&lt;/SPAN&gt;&amp;nbsp;htmlElement&amp;nbsp;=&amp;nbsp;htmlDocument.GetElementById(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;htmlInputBox&quot;&lt;/SPAN&gt;);
&lt;STRONG&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;htmlElement.AttachEvent(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;onkeyup&quot;&lt;/SPAN&gt;,&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;new&lt;/SPAN&gt;&amp;nbsp;EventHandler(&lt;SPAN style=&quot;COLOR: blue&quot;&gt;this&lt;/SPAN&gt;.OnChange));&lt;br /&gt;

&lt;/STRONG&gt;}&lt;br /&gt;



&lt;STRONG&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;private&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;void&lt;/SPAN&gt;&amp;nbsp;OnChange(&lt;SPAN style=&quot;COLOR: blue&quot;&gt;object&lt;/SPAN&gt;&amp;nbsp;sender,&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;EventArgs&lt;/SPAN&gt;&amp;nbsp;e)&lt;/STRONG&gt;
{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;HtmlDocument&lt;/SPAN&gt;&amp;nbsp;htmlDocument&amp;nbsp;=&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;HtmlPage&lt;/SPAN&gt;.Document;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;HtmlElement&lt;/SPAN&gt;&amp;nbsp;htmlElement&amp;nbsp;=&amp;nbsp;htmlDocument.GetElementById(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;htmlInputBox&quot;&lt;/SPAN&gt;);&lt;br /&gt;

 &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;string&lt;/SPAN&gt;&amp;nbsp;text&amp;nbsp;=&amp;nbsp;htmlElement.GetAttribute(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;value&quot;&lt;/SPAN&gt;);&lt;br /&gt;

&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;  &amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;if&lt;/SPAN&gt;&amp;nbsp;(text&amp;nbsp;!=&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;null&lt;/SPAN&gt;)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;this&lt;/SPAN&gt;.txtHTML.Text&amp;nbsp;=&amp;nbsp;text;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
}&lt;br /&gt;

&lt;SPAN style=&quot;COLOR: blue&quot;&gt;private&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;void&lt;/SPAN&gt;&amp;nbsp;btnGetHTML_Click(&lt;SPAN style=&quot;COLOR: blue&quot;&gt;object&lt;/SPAN&gt;&amp;nbsp;sender,&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;RoutedEventArgs&lt;/SPAN&gt;&amp;nbsp;e)&lt;br /&gt;

{&lt;br /&gt;


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OnChange(&lt;SPAN style=&quot;COLOR: blue&quot;&gt;null&lt;/SPAN&gt;,&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;null&lt;/SPAN&gt;);&lt;br /&gt;


}&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;- MainPage.xaml.cs - &lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;테스트를 위해 AttachEvent 메서드를 이용하여, 생성자에 HTML의 텍스트 박스의 KeyUp 이벤트를 설정하였고, 이벤트 핸들러에서는 요소에서 가져온 텍스트를 실버라이트의 텍스트 박스에 설정합니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2047782E4CA9DFB841&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;실행결과 HTML 텍스트박스의 글자가 바뀔 때 마다 실버라이트의 텍스트박스에 나타납니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; BACKGROUND: #c2d69b&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 100%&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 14pt&quot;&gt;&lt;STRONG&gt;#2. HTML에서 실버라이트 접근&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/180576284CA9DFB85C&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;HTML에서 실버라이트에 접근하는 시나리오를 위해 위와 같이 기존 .aspx에 버튼을 추가하고, 실버라이트 object요소에 id값을 추가합니다. 그리고 버튼의 클릭 속성에 자바스크립트 함수를 넣어줍니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; BACKGROUND: #daeef3&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 638px&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: 0.5pt solid; BORDER-RIGHT: 0.5pt solid&quot; vAlign=center&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;h2&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;gt;&lt;/SPAN&gt;HTML&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림체&quot;&gt;영역&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;lt;/&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;h2&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;gt;&lt;/SPAN&gt;
&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림체&quot;&gt;텍스트&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림체&quot;&gt;입력&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;nbsp;:&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;input&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;type&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;text&quot;&lt;/SPAN&gt;&amp;nbsp;id&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;htmlInputBox&quot;&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;style&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;&lt;SPAN style=&quot;COLOR: red&quot;&gt;width&lt;SPAN style=&quot;COLOR: blue&quot;&gt;:300px;&quot;&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;/&amp;gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;	
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;input&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;type&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;button&quot;&lt;/SPAN&gt;&amp;nbsp;id&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;htmlButton&quot;&lt;/SPAN&gt;&amp;nbsp;onclick&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;CallSilverlight()&quot;&lt;/SPAN&gt;&amp;nbsp;
       value&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림체&quot;&gt;버튼을&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림체&quot;&gt;누르면&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림체&quot;&gt;실버라이트에&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 굴림체&quot;&gt;접근&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&quot;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas&quot;&gt;&lt;STRONG&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;/&amp;gt;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;hr&lt;/SPAN&gt;&amp;nbsp;/&amp;gt;
&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;div&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;id&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;silverlightControlHost&quot;&amp;gt;
   &lt;/SPAN&gt;&lt;/SPAN&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;object&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;&lt;STRONG&gt;id&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;ObjSilverlight&quot;&lt;/SPAN&gt;&lt;/STRONG&gt;&amp;nbsp;data&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;data:application/x-silverlight-2,&quot;&lt;/SPAN&gt;&amp;nbsp;
            type&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;application/x-silverlight-2&quot;
&lt;/SPAN&gt;&lt;/SPAN&gt;............&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;- HTMLBridgeTestPage.aspx - &lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;실버라이트에 접근하려면 자바스크립트를 사용해야 하는데요. 버튼을 누르면 실버라이트의 텍스트박스에서 값을 가져와 HTML의 텍스트박스에 집어 넣도록 하겟습니다. 아래와 같이 자바스크립트를 &amp;lt;head&amp;gt;태그 안에 추가합니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; BACKGROUND: #daeef3&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 100%&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: 0.5pt solid; BORDER-RIGHT: 0.5pt solid&quot; vAlign=center&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;script&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: red&quot;&gt;type&lt;SPAN style=&quot;COLOR: blue&quot;&gt;=&quot;text/javascript&quot;&amp;gt;&lt;/SPAN&gt;
&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;function&lt;/SPAN&gt;&amp;nbsp;CallSilverlight()&amp;nbsp;{
&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;var&lt;/SPAN&gt;&amp;nbsp;ObjSilverlight&amp;nbsp;=&amp;nbsp;document.getElementById(&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;&quot;ObjSilverlight&quot;&lt;/SPAN&gt;);
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;var&lt;/SPAN&gt;&amp;nbsp;text&amp;nbsp;=&amp;nbsp;ObjSilverlight.Content.REG_SILVERLIGHT.SilverlightMethod();
&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.getElementById(&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;&quot;htmlInputBox&quot;&lt;/SPAN&gt;).value&amp;nbsp;=&amp;nbsp;text;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;lt;/&lt;SPAN style=&quot;COLOR: maroon&quot;&gt;script&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;- HTMLBridgeTestPage.aspx – &lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;자바스크립트를 살펴보면 document객체의 &lt;STRONG&gt;getElementById&lt;/STRONG&gt; 함수에 실버라이트 &lt;STRONG&gt;Object태그의 id값&lt;/STRONG&gt;을 넣어 실버라이트 객체를 얻어옵니다. 그 &lt;STRONG&gt;다음줄에서 ObjSilverlight.Content.REG_SILVERLIGHT.SilverlightMethod();&lt;/STRONG&gt;와 같은 코드가 보이는데요, 이것이 핵심입니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;자바스크립트를 통해 실버라이트에 접근하기 위해서는 &lt;STRONG&gt;RegisterSCriptableObject&lt;/STRONG&gt;아래와 같이 객체를 등록 하여야 합니다. 객체를 등록하기 위해서는 객체에 &lt;STRONG&gt;[ScriptableMember]&lt;/STRONG&gt;가 있어야 하고, &lt;STRONG&gt;이 속성이 붙은 메서드는 자바스크립트에 노출&lt;/STRONG&gt;됩니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; BACKGROUND: #daeef3&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 100%&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: 0.5pt solid; BORDER-RIGHT: 0.5pt solid&quot; vAlign=center&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;public&lt;/SPAN&gt;&amp;nbsp;MainPage()
&amp;nbsp;{
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;……&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;HtmlPage&lt;/SPAN&gt;.RegisterScriptableObject(&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;REG_SILVERLIGHT&quot;&lt;/SPAN&gt;,&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;this&lt;/SPAN&gt;);
&amp;nbsp;}&lt;br /&gt;


 [&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;ScriptableMember&lt;/SPAN&gt;]
&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;public&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;string&lt;/SPAN&gt;&amp;nbsp;SilverlightMethod()
&amp;nbsp;{&lt;br /&gt;


&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;return&lt;/SPAN&gt;&amp;nbsp;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;this&lt;/SPAN&gt;.txtHTML.Text;
&amp;nbsp;}&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;-MainPage.xaml.cs- &lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;즉 위의 자바스크립트의 코드는 등록 된 실버라이트 객체의 ScriptableMemeber를 호출하는 코드입니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1243C7324CA9DFB80B&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;테스트를 해보니 HTML버튼을 누르면 자바스크립트가 호출되어, 실버라이트의 메서드를 호출하는 것을 알 수 있습니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;WIDTH: 100%; BORDER-COLLAPSE: collapse; BACKGROUND: #daeef3&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 100%&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: 0.5pt solid; BORDER-RIGHT: 0.5pt solid&quot; vAlign=center&gt;
&lt;P style=&quot;TEXT-ALIGN: justify&quot;&gt;&lt;PRE&gt;&lt;CODE&gt;&lt;SPAN style=&quot;FONT-FAMILY: Consolas; FONT-SIZE: 10pt&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/1879C90B4CA9E082C8&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;HTMLBridge.zip&lt;/a&gt;&lt;/div&gt;
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;실버라이트를 처음으로 접할 때 프로젝트를 생성해 보셨을 것입니다. 프로젝트의 구조를 살펴보고, ASP.NET이나 HTML위에 실버라이트가 Object태그로 추가되는 것을 보고, 한번쯤 둘간의 상호작용을 어떻게 할지에 대해 궁금하셨을 것입니다. 오늘은 가장 기본이 되는 실버라이트와 HTML간의 엑세스 방법에 대해 알아 보았습니다. 이 방법은 ASP.NET과 자바스크립트 기술을 이용하는 것이고 이것을 이용하여 실버라이트가 addOn된 멋진 페이지를 작성 할 수 있습니다.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <category>.NET/Silverlight</category>
      <category>HTML</category>
      <category>실버라이트</category>
      <category>엑세스</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/77</guid>
      <comments>https://crynut84.tistory.com/77#entry77comment</comments>
      <pubDate>Mon, 4 Oct 2010 23:07:53 +0900</pubDate>
    </item>
    <item>
      <title>Visual Studio2010 Copy &amp;amp; Paste 한글 깨짐 현상 해결</title>
      <link>https://crynut84.tistory.com/76</link>
      <description>&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;안녕하세요? 맨날맑음 입니다. &lt;br /&gt;
&lt;br /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;Visual Studio 2010 정식 버전이 나온 지 꽤 시간이 흘렀고, 저는 선물로 받은 MSDN Subscriptions을 이용하여 사용하고 있습니다. 블로그를 운영하는 개발자라면 &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;포스팅 내용 중에 소스코드를 넣는 일이 많이 있으실&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt; 텐데요. 블로그에 소스코드를 넣는 것은 단순히 Copy &amp;amp; Paste하는 방법이 있겠지만 이렇게 되면 &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;소스코드의 색이 일괄적으로 검은색으로 나타나서 보기 불편&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;하게 됩니다. &lt;br /&gt;
&lt;br /&gt;Google code의 &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;SyntaxHighlighter&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;와 같은 스크립트를 이용하는 방법이 있지만 저처럼 MS Word나 Live Writter를 이용하여 포스팅 하는 경우에는 포스팅 이후에 다시 수정하여, 소스코드 부분에 스크립트를 붙여 주어야 하기 때문에 불편한 점이 많은 것이 사실입니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;br /&gt;
그래서 제가 사용하는 방법은 MS Word를 이용하여 포스팅 하는 것 인데요, 그림을 붙여 넣기 하기도 편하고, 워드 프로그램의 특성 상 글을 편집하고 관리하기도 편리합니다. 그런데 &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;Visual Studio 2010을 사용하면서 문제점이 생겼습니다. 소스코드를 붙여넣기 하면 주석에 포함된 한글이나 소스코드에 포함된 한글은 모두 깨져서 붙여지는 현상&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;인데요.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;BORDER-COLLAPSE: collapse; BACKGROUND: #daeef3&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 100%&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: 0.5pt solid; BORDER-RIGHT: 0.5pt solid&quot; vAlign=center&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: blue; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;protected&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; btnRegister_Click(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;object&lt;/SPAN&gt;&lt;FONT color=#000000&gt; sender, &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;EventArgs&lt;/SPAN&gt;&lt;FONT color=#000000&gt; e)&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;switch&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;MemberAuthenticate&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.MemberCheck(tbID.Text, tbPassword.Text))&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;case&lt;/SPAN&gt;&lt;FONT color=#000000&gt; -2:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;lblInfo.Text = &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;이&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;I&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;미&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;öI &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;가&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;Æ¢®&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;입&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;O&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;된&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;ìE &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;아&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;ú¨¡&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;이&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;I&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;디&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;ì©£ &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;입&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;O&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;니&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;¥I&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;다&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;¥U&quot;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;case&lt;/SPAN&gt;&lt;FONT color=#000000&gt; -3:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;lblInfo.Text = &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;아&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;ú¨¡&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;이&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;I&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;디&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;ì©£&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;와&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;¯I &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;패&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;¡¨¢&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;스&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;ö¨¬&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;워&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;¯o&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;드&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;ìa&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;를&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;¬| &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;정&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;¢´&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;확&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;¢ç&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;히&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;¡À &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;입&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;O&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;력&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;¤A&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;하&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;I&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;세&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;ù¨ù&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt; mso-ascii-font-family: 'Malgun Gothic'; mso-hansi-font-family: 'Malgun Gothic'&quot;&gt;요&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: #a31515; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;¯a&quot;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;; &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; FONT-SIZE: 12pt; mso-bidi-font-size: 9.5pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;해결 방법은 VS2010 플러그인을 설치하시면 됩니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/11311B254C9091AF01&quot; /&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;-Fig1. Visual Studio2010 확장 관리자- &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;VS2010에서 새롭게 추가된 기능인 &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;확장 관리자&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;는 VS에 추가되는 여러 기능을 손쉽게 설치할 수 있도록 도와주는 메뉴입니다&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;. [도구 -&amp;gt; 확장 관리자]&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;를 선택하면 확장 관리자를 볼 수 있는데요. 왼쪽의 메뉴에서 온라인 갤러리를 선택하시면 다양한 플러그인을 볼 수 있습니다. 한글 깨짐을 해결 하기 위해서는 &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;Productivity Power Tools&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;를 설치 하시면 됩니다. 마우스 더블클릭만으로 손쉽게 설치되어 편리하게 사용 할 수 있습니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;다른 방법으로 Productivity Power Tools를 설치 하시려면 &lt;/SPAN&gt;&lt;A href=&quot;http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;여기&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;에서 다운로드 받아 설치 하시면 됩니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;A href=&quot;http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/146DF7244C9091B040&quot; width=&quot;708&quot; height=&quot;382&quot; /&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;-Fig2. Productivity Prower Tools &lt;/SPAN&gt;&lt;A href=&quot;http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;다운로드&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt; 페이지- &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;설치하니 소스코드의 한글이 무사하군요! 사소하지만 모르면 완전 불편한 팁이었습니다! &lt;/SPAN&gt;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;BORDER-COLLAPSE: collapse; BACKGROUND: #daeef3&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 100%&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;BORDER-BOTTOM: 0.5pt solid; BORDER-LEFT: 0.5pt solid; PADDING-LEFT: 7px; PADDING-RIGHT: 7px; BORDER-TOP: 0.5pt solid; BORDER-RIGHT: 0.5pt solid&quot; vAlign=center&gt;
&lt;P&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;private&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;void&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;listView1_DragDrop(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;object&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;sender,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;DragEventArgs&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;e)&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;{&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;string&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;[]&amp;nbsp;dropFiles&amp;nbsp;=&amp;nbsp;e.Data.GetData(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;DataFormats&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;.FileDrop)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;as&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;string&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;[];&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;if&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;(dropFiles&amp;nbsp;!=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;null&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;)&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;foreach&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;string&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;fileName&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;in&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;dropFiles)&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;//파일에서&amp;nbsp;아이콘&amp;nbsp;추출&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;Icon&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;icon&amp;nbsp;=&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;Icon&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;.ExtractAssociatedIcon(fileName);&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;//이미지리스트에&amp;nbsp;아이콘&amp;nbsp;추가&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;imageList.Images.Add(icon);&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;//리스트뷰에&amp;nbsp;파일명과&amp;nbsp;인덱트&amp;nbsp;추가&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;listView1.Items.Add(fileName.Substring(fileName.LastIndexOf(&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&quot;\\&quot;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;)&amp;nbsp;+&amp;nbsp;1),&amp;nbsp;listView1.Items.Count);&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;</description>
      <category>etc</category>
      <category>Productivity Power Tools</category>
      <category>Visual Studio 2010</category>
      <category>한글 깨짐</category>
      <category>확장 관리자</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/76</guid>
      <comments>https://crynut84.tistory.com/76#entry76comment</comments>
      <pubDate>Wed, 15 Sep 2010 18:25:43 +0900</pubDate>
    </item>
    <item>
      <title>마우스 드래그를 이용한 사각형 그리기</title>
      <link>https://crynut84.tistory.com/75</link>
      <description>&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 12pt&quot;&gt;안녕하세요? 맨날맑음 입니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; FONT-SIZE: 12pt&quot;&gt;이번 포스팅은 WPF에서 &lt;STRONG&gt;마우스 드래그를 이용한 간단한 사각형 그리기&lt;/STRONG&gt;입니다. 이 예제를 응용하면 원이나 선도 그릴 수 있고, 자료구조를 이용하면 윈도우 그림판과 같은 기능도 쉽게 만들 수 있습니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/132B70364C8E1E4B84&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;-Fig1. 사각형을 그리는 WPF 어플리케이션- &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;Fig1에서 보는 바와 같이 마우스의 현재 좌표를 왼쪽 상단에 표시해 주며, 드래그를 이용하여 사각형을 그리는 기능을 합니다. WPF에서 제공하는 InkCanvas객체를 이용하면 더 간단하게 구현도 가능 하겠네요^^; 하지만 이번에는 Grid에 사각형을 그리는 방법으로 구현해 보겠습니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;DIV&gt;
&lt;TABLE style=&quot;BORDER-COLLAPSE: collapse; BACKGROUND: #c2d69b&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 628px&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 18pt&quot;&gt;&lt;STRONG&gt;#1. 마우스 이벤트&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1858B3354C8E1E4BB3&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;-Fig2. WPF Window의 마우스 이벤트- &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;WPF의 컨트롤은 마우스 이벤트를 가지고 있습니다. 마우스 다운이나 업, 마우스 무브, 마우스 휠 등 이벤트를 지원하는데요. 우리 예제에서는 MouseLeftButtonDown과 MouseMove, MouseLeftButtonUp 세 가지 이벤트를 사용합니다. 마우스 이벤트 핸들러에서는 &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;STRONG&gt;MouseEventArgs &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;STRONG&gt;객체가 인자로 넘어오고 이 이벤트객체를 이용하면 현재 마우스의 상태정보&lt;/STRONG&gt;를 알 수 있습니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;
&lt;TABLE style=&quot;BORDER-COLLAPSE: collapse&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 75px&quot;&gt;
&lt;COL style=&quot;WIDTH: 89px&quot;&gt;
&lt;COL style=&quot;WIDTH: 468px&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR style=&quot;BACKGROUND: #e5e5e5; HEIGHT: 21px&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #bbbbbb 0.75pt solid; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #bbbbbb 0.75pt solid; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이름&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: #bbbbbb 0.75pt solid; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;설명&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1242EA304C8E1E4B82&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.input.inputeventargs.device.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Device&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이 이벤트를 시작한 입력 장치를 가져옵니다. (&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.input.inputeventargs.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;InputEventArgs&lt;/A&gt;에서 상속됨)&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1572F22F4C8E1E4CA5&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.routedeventargs.handled.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Handled&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;라우트된 이벤트가 경로를 따라 이동할 때의 현재 이벤트 처리 상태를 나타내는 값을 가져오거나 설정합니다. &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/20536B314C8E1E4C71&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.input.mouseeventargs.leftbutton.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;LeftButton&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;마우스 왼쪽 단추의 현재 상태를 가져옵니다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1526692F4C8E1E4C11&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.input.mouseeventargs.middlebutton.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;MiddleButton&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;마우스 가운데 단추의 현재 상태를 가져옵니다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/176043314C8E1E4C31&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.input.mouseeventargs.mousedevice.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;MouseDevice&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이 이벤트와 연결된 마우스 장치를 가져옵니다. &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/134CDF364C8E1E4C76&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.routedeventargs.originalsource.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;OriginalSource&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;부모 클래스에서 &lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.routedeventargs.source.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;Source&lt;/A&gt;를 조정하기 전에 순수 적중 테스트에 의해 결정되는 원본 보고 소스를 가져옵니다. &lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1501912E4C8E1E4D77&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.input.mouseeventargs.rightbutton.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;RightButton&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;마우스 오른쪽 단추의 현재 상태를 가져옵니다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/17290B334C8E1E4D23&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.routedeventargs.routedevent.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;RoutedEvent&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이 &lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.routedeventargs.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;RoutedEventArgs&lt;/A&gt; 인스턴스와 연결된 &lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.routedeventargs.routedevent.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;RoutedEvent&lt;/A&gt;를 가져오거나 설정합니다. (&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.routedeventargs.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;RoutedEventArgs&lt;/A&gt;에서 상속됨)&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/131DAB244C8E1E4D3E&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.routedeventargs.source.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Source&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이벤트를 발생시킨 개체에 대한 참조를 가져오거나 설정합니다. (&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.routedeventargs.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;RoutedEventArgs&lt;/A&gt;에서 상속됨)&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1677DA0F4C8E1E4D8B&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.input.mouseeventargs.stylusdevice.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;StylusDevice&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이 이벤트와 연결된 스타일러스 장치를 가져옵니다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/153E69254C8E1E4D48&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.input.inputeventargs.timestamp.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Timestamp&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이 이벤트가 발생한 시간을 가져옵니다. (&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.input.inputeventargs.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;InputEventArgs&lt;/A&gt;에서 상속됨)&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/193AEE2E4C8E1E4E06&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.input.mouseeventargs.xbutton1.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;XButton1&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;첫 번째로 확장된 마우스 단추의 현재 상태를 가져옵니다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR style=&quot;BACKGROUND: white&quot;&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: #bbbbbb 0.75pt solid; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1818D90C4C8E1E4E58&quot; /&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.input.mouseeventargs.xbutton2.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;XButton2&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD style=&quot;BORDER-BOTTOM: #bbbbbb 0.75pt solid; BORDER-LEFT: medium none; PADDING-BOTTOM: 4px; PADDING-LEFT: 4px; PADDING-RIGHT: 4px; BORDER-TOP: medium none; BORDER-RIGHT: #bbbbbb 0.75pt solid; PADDING-TOP: 4px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;두 번째로 확장된 마우스 단추의 현재 상태를 가져옵니다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;- MouseEventArgs 의 속성 (출처 : &lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.windows.input.mouseeventargs_members.aspx?appId=Dev10IDEF1&amp;amp;l=KO-KR&amp;amp;k=k(SYSTEM.WINDOWS.INPUT.MOUSEEVENTARGS);k(MOUSEEVENTARGS);k(TargetFrameworkMoniker-%22.NETFRAMEWORK&amp;amp;k=VERSION=V4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&quot;&gt;MSDN&lt;/A&gt;)- &lt;/P&gt;
&lt;P&gt;이벤트 객체의 속성을 통해 마우스의 현재 상태정보를 알 수 있으며, &lt;STRONG&gt;GetPosition() 메서드를 이용하면 마우스 포인트의 좌표&lt;/STRONG&gt;를 얻어 올 수도 있습니다. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style=&quot;BORDER-COLLAPSE: collapse; BACKGROUND: #c2d69b&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 628px&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 18pt&quot;&gt;&lt;STRONG&gt;#2. Shape객체&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;WPF에서 Rectangle, Ellipse, Polygon과 같은 모든 도형의 기본 클래스는 Shape입니다. Shape는 UI 요소이므로 패널이나 대부분의 컨트롤에서 사용 할 수 있습니다. S&lt;STRONG&gt;troke 속성을 사용하면 도형의 테두리(윤곽선)의 색상을 지정 할 수 있고, StrokeThickness 속성을 이용하면 도형의 테두리 두께를 설정 할 수 있습니다. 또한 Fill 속성을 이용하면 도형의 표면 색상을 설정&lt;/STRONG&gt; 할 수 있습니다. &lt;/P&gt;&lt;PRE class=&quot;brush: html&quot;&gt; 
&lt;ELLIPSE Stroke=&quot;Black&quot; StrokeThickness=&quot;2&quot; Fill=&quot;Yellow&quot; Width=&quot;200&quot; Height=&quot;100&quot; /&gt;
&lt;/PRE&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/193140324C8E1E4E08&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;-Fig3. 여러 속성을 적용하여 랜더링 된 원의 모습- &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style=&quot;BORDER-COLLAPSE: collapse; BACKGROUND: #c2d69b&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 628px&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 18pt&quot;&gt;&lt;STRONG&gt;#3. 코드 구현&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;코드가 간단하여, 대부분의 설명은 주석으로 코드설명을 대신합니다. WPF 프로젝트를 생성하고, 다음과 같은 코드를 넣어 줍니다. &lt;/SPAN&gt;&lt;/P&gt;&lt;PRE class=&quot;brush: html&quot;&gt; 
&lt;GRID x:Name=&quot;root&quot; Background=&quot;White&quot;&gt;
    &lt;TEXTBLOCK x:Name=&quot;tbPosition&quot; Text=&quot;마우스 좌표 : [0.0]&quot; Margin=&quot;10&quot; /&gt;
&lt;/GRID&gt;
&lt;/PRE&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;-Code1. MainWindow.xaml- &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=&quot;brush: csharp&quot;&gt; 
public partial class MainWindow : Window
 {
     /// &lt;SUMMARY&gt;
     /// 드레그를 시작한 마우스 좌표;
     /// &lt;/SUMMARY&gt;
     Point prePosition;
     /// &lt;SUMMARY&gt;
     /// 현재 그려지는 사각형
     /// &lt;/SUMMARY&gt;
     Rectangle currentRect;

     public MainWindow()
     {
         InitializeComponent();
         //이벤트 핸들러 생성
         this.root.MouseLeftButtonDown += new MouseButtonEventHandler(root_MouseLeftButtonDown);
         this.root.MouseMove += new MouseEventHandler(root_MouseMove);
         this.root.MouseLeftButtonUp += new MouseButtonEventHandler(root_MouseLeftButtonUp);
         
         // 좌표를 나타내는 TextBlock을 최상위로 ...
         Grid.SetZIndex(this.tbPosition, 99999);
     }

     /// &lt;SUMMARY&gt;
     /// 마우스 클릭 해제 이벤트 핸들러
     /// &lt;/SUMMARY&gt;
     /// &lt;PARAM name=&quot;sender&quot;&gt;&lt;/PARAM&gt;
     /// &lt;PARAM name=&quot;e&quot;&gt;&lt;/PARAM&gt;
     void root_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
     {
         //마우스 캡춰를 제거한다.
         this.root.ReleaseMouseCapture();
         SetRectangleProperty();
         currentRect = null;
     }

     private void SetRectangleProperty()
     {
         //사각형의 투명도를 100% 로 설정
         currentRect.Opacity = 1;
         //사각형의 색상을 지정
         currentRect.Fill = new SolidColorBrush(Colors.LightYellow);
         //사각형의 테두리를 선으로 지정
         currentRect.StrokeDashArray = new DoubleCollection(); ;
     }

     /// &lt;SUMMARY&gt;
     /// 마우스 이동 이벤트 핸들러
     /// &lt;/SUMMARY&gt;
     /// &lt;PARAM name=&quot;sender&quot;&gt;&lt;/PARAM&gt;
     /// &lt;PARAM name=&quot;e&quot;&gt;&lt;/PARAM&gt;
     void root_MouseMove(object sender, MouseEventArgs e)
     {
         
         //현재 이동한 마우스의 좌표를 얻어온다
         Point currnetPosition = e.GetPosition(this.root);
         //좌표를 표시한다.
         this.tbPosition.Text = string.Format(&quot;마우스 좌표 : [{0},{1}]&quot;, currnetPosition.X, currnetPosition.Y);
         //마우스 왼쪽 버튼이 눌려있으면
         if (e.MouseDevice.LeftButton == MouseButtonState.Pressed)
         {
             if (currentRect != null)
             {
                 //사각형이 나타날 기준점을 설정한다.
                 double left = prePosition.X;
                 double top = prePosition.Y;
                 //마우스의 위치에 따라 적절히 기준점을 변경한다.
                 if (&lt;FONT style=&quot;BACKGROUND-COLOR: #ffff00; COLOR: #000000; FONT-SIZE: 120%; FONT-WEIGHT: bold&quot; id=altools-findtxt&gt;pre&lt;/FONT&gt;Position.X &amp;gt; currnetPosition.X)
                 {
                     left = currnetPosition.X;
                 }
                 if (prePosition.Y &amp;gt; currnetPosition.Y)
                 {
                     top = currnetPosition.Y;
                 }
                 //사각형의 위치 기준점(Margin)을 설정한다
                 currentRect.Margin = new Thickness(left, top, 0, 0);
                 //사각형의 크기를 설정한다. 음수가 나올 수 없으므로 절대값을 취해준다.
                 currentRect.Width = Math.Abs(prePosition.X - currnetPosition.X);
                 currentRect.Height = Math.Abs(prePosition.Y - currnetPosition.Y);
             }
         }
     }

     /// &lt;SUMMARY&gt;
     /// 마우스 왼쪽 버튼 클릭 이벤트 핸들러
     /// &lt;/SUMMARY&gt;
     /// &lt;PARAM name=&quot;sender&quot;&gt;&lt;/PARAM&gt;
     /// &lt;PARAM name=&quot;e&quot;&gt;&lt;/PARAM&gt;
     void root_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
     {
         //마우스의 좌표를 저장한다.
         prePosition = e.GetPosition(this.root);
         //마우스가 Grid밖으로 나가도 위치를 알 수 있도록 마우스 이벤트를 캡처한다.
         this.root.CaptureMouse();
         if (currentRect == null)
         {
             //사각형을 생성한다.
             CreteRectangle();               
         }
     }

     private void CreteRectangle()
     {
         
         currentRect = new Rectangle();
         currentRect.Stroke = new SolidColorBrush(Colors.DarkGreen);
         currentRect.StrokeThickness = 2;
         currentRect.Opacity = 0.7;
         //사각형을 그리는 동안은 테두리를 Dash 스타일로 설정한다.
         DoubleCollection dashSize = new DoubleCollection();
         dashSize.Add(1);
         dashSize.Add(1);
         currentRect.StrokeDashArray = dashSize;
         currentRect.StrokeDashOffset = 0;
         //사각형의 정렬 기준을 설정한다.
         currentRect.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
         currentRect.VerticalAlignment = System.Windows.VerticalAlignment.Top;
         //그리드에 추가한다.
         this.root.Children.Add(currentRect);
     }
 }

&lt;/PRE&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;-Code2. MainWindow.xaml.cs- &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;마우스를 드래그하는 동안은 그림판이나 포토샵에서와 같이 점선으로 사각형의 모양을 표시 해 줄 필요가 있기 때문에 테두리의 속성을 변경 할 필요가 있습니다. 테두리를 점선으로 표시하는 속성은 Rectangle객체의 StrokeDashArray를 사용하여 설정 할 수 있으며, XAML에서는 다음과 같이 표현 할 수 있습니다. &lt;/SPAN&gt;&lt;/P&gt;&lt;PRE class=&quot;brush: xhtml&quot;&gt; 
&lt;ELLIPSE Stroke=&quot;Black&quot; StrokeThickness=&quot;3&quot; Fill=&quot;Red&quot; Width=&quot;200&quot; Height=&quot;100&quot; StrokeDashArray=&quot;4,2&quot;&gt;&lt;/ELLIPSE&gt;
&lt;/PRE&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1369FF284C8E1E4F50&quot; /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;-Fig4. StrokeDashArray 속성이 적용 된 Ellipse- &lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE style=&quot;BORDER-COLLAPSE: collapse; BACKGROUND: #c2d69b&quot; border=0&gt;
&lt;COLGROUP&gt;
&lt;COL style=&quot;WIDTH: 628px&quot;&gt;&lt;/COLGROUP&gt;
&lt;TBODY vAlign=top&gt;
&lt;TR&gt;
&lt;TD style=&quot;PADDING-BOTTOM: 2px; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; PADDING-TOP: 2px&quot;&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 18pt&quot;&gt;&lt;STRONG&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/167370114C8E22C418&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;DragSample.zip&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/185FBF114C8E22D85E&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/exe.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;DragSample.exe&lt;/a&gt;&lt;/div&gt;
&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;소스 빌드 환경 : VisualStudio2010, .NET Framework4.0&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;</description>
      <category>.NET/WPF</category>
      <category>Drag Rectangle WPF Shape MouseCapture</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/75</guid>
      <comments>https://crynut84.tistory.com/75#entry75comment</comments>
      <pubDate>Mon, 13 Sep 2010 21:51:27 +0900</pubDate>
    </item>
    <item>
      <title>쿠키(Cookie)와 세션(Session)</title>
      <link>https://crynut84.tistory.com/74</link>
      <description>&lt;H1&gt;&lt;FONT color=#ff0000&gt;작성중&lt;/FONT&gt;&lt;/H1&gt;
&lt;P&gt;일반적으로 동적인 웹 사이트 개발 시 상태관리(State Management)가 필요 합니다. 이번 포스팅에서는&amp;nbsp; 상태관리가 무엇인지와 우리가 일반적으로 많이 사용하는 쿠키(Cookie)와 세션(Session)에 대해 자세히 알아 보도록 하겠습니다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=&quot;100%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=&quot;100%&quot; bocolor=&quot;#c6ff70&quot;&gt;
&lt;H2&gt;#1. 웹 서버 동작 원리&lt;/H2&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P align=left&gt;웹 사이트 상태관리의 필요성을 알기 위해 웹 서버와 클라이언트(웹 브라우저)가 어떠한 방식으로 동작 하는지를 먼저 알아 보겠습니다.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;https://t1.daumcdn.net/cfile/tistory/154064194C88A8578B&quot;&gt;&lt;IMG style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: block; FLOAT: none; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: auto&quot; title=image border=0 alt=image src=&quot;https://t1.daumcdn.net/cfile/tistory/1675CD164C88A85811&quot; width=399 height=253&gt;&lt;/A&gt;-Fig1. 정적 웹 서버 동작 원리- &lt;/P&gt;
&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Fig1을 보면 아주 간단한 원리로 동작 하는 것을 알 수 있는데요. 클라이언트가 HTTP 프로토콜을 사용하여 웹 서버로 요청(Request)을 하게 되면 웹 서버는 해당 하는 HTML을 웹 브라우저로 전송 해 주고 웹 브라우저는 응답(Response) 받은 HTML을 파싱하여 사용자에게 보여주게 됩니다. 여기서 ‘요청’이란 우리가 웹 브라우저의 주소 표시줄에 &lt;A href=&quot;http://crynut84.tistory.com/&quot;&gt;http://crynut84.tistory.com&lt;/A&gt;이라고 입력 하는 행위나 웹 사이트의 링크를 마우스로 클릭하는 행위 등을 말합니다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;웹 사이트는 다시 정적인 웹 사이트와 동적인 웹사이트로 나눌 수 있습니다. 정적인 웹 사이트는 웹 서버에서 .HTML 파일을 완성된 .HTML 파일을 가지고 있다가 클라이언트의 요청이 있을 시 해당하는 .HTML 파일을 돌려 주는 형태입니다. 당연히 HTML 페이지의 내용들은 이미 결정 되어있어 있으므로 클라이언트의 상태, 방문정보, 시각등의 내용에 관계없이 항상 동일한 HTML 페이지를 보여줍니다. 요즘은 이런 웹사이트는 거의 없을 듯 합니다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;동적인 웹 사이트는 사용자의 액션에 따라 웹 사이트가 다르게 동작 하는 것을 말합니다. 예를들어 요즘 웹 사이트는 거의 로그인이라는 인증 과정을 거치게 되고, 로그인을 하면 ‘전호진님 환영합니다’라고 환영 인사도 해줍니다. 또한 게시판은 검색어에 따라 다른 결과를 보여주게 되고, 사용자 입맛에 맛게 정렬도 할 수 있습니다. 이와같이 요즘 일반적으로 볼 수 있는 사용자와 웹사이트가 서로 상호작용을 하는 웹 사이트를 동적인 웹사이트라고 합니다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;동적인 웹사이트를 만드는 기술은 ASP.NET, JSP, ASP, PHP, CGI등 여러 가지가 있습니다. 마이크로소프트의 동적인 웹사이트를 만드는 기술인 ASP.NET의 동작 원리(Fig2)를 보면 정적 웹사이트와 조금 다른 것을 알 수 있는데요.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;https://t1.daumcdn.net/cfile/tistory/206218154C88A8584A&quot;&gt;&lt;IMG style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: block; FLOAT: none; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: auto&quot; title=image border=0 alt=image src=&quot;https://t1.daumcdn.net/cfile/tistory/1312A21E4C88A85812&quot; width=677 height=252&gt;&lt;/A&gt;-Fig2. 동적 웹 서버 동작 원리- &lt;/P&gt;
&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;클라이언트가 요청하게 되면 웹 서버는 요청에 대한 적절한&amp;nbsp; HTML을 새롭게 생성 합니다. 요청에 대한 일련의 처리(로직 수행)를 수행하게 되고 처리 결과를 다시 클라이언트에 돌려 주게 되는데 동적인 웹 사이트라고 해도 클라이언트가 받는 최종 응답은 정적인 HTML 페이지입니다. 예를들어 게시판에 여러 게시글이 있는데 사용자가 ASP.NET을 검색어로 입력하고 검색 버튼을 누르게 되면 이 요청을 웹서버가 받아서 게시글 중 ASP.NET이 들어간 결과만 찾아서 형식에 맞는 HTML을 구성하게 되고 클라이언트에 응답하주게 되는 것입니다. 이렇게 동적인 처리를 위해 ASP.NET과 같은 웹 기술이 필요하게 되고, 모든 처리는 웹 서버에서 수행되며, 클라이언트의 입장에서는 정적인 웹 사이트와 동일하게 웹 서버에 요청을 하고 응답받은 결과를 파싱하여 보여 주게 됩니다.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=&quot;100%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=&quot;100%&quot; bocolor=&quot;#c6ff70&quot;&gt;
&lt;H2&gt;#2. 상태 관리(State Management)&lt;/H2&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;웹 사이트를 사용하는 사용자는 HTTP GET방식이나 HTTP POST방식을 사용하여 웹 서버로 페이지를 요청하게 되고, 웹 브라우저는 웹 서버에서 응답받은 HTML을 파싱하여 렌더링하게 됩니다. 이러한 일련의 주기를 ‘라운드트립(Round Trip)’ 이라고 합니다.그런데 HTTP 프로토콜은 상태를 저장 할 수 없는 프로토콜입니다. 이 말은 클라이언트의 요청이 왔을대 웹 서버는 해당 요청에 대한 응답인 HTML을 보내주고 연결을 끊어버린다는 것입니다. 그렇기 때문에 라운드트립 시 페이지에 있는 컨트롤의 사용자 입력정보나 페이지의 정보들이 모두 손실 되게 됩니다.&amp;nbsp; 예전에 사용하던 정적인 웹사이트(일방적으로 보기만 하는 웹사이트)에서는 문제가 되지 않지만 동적인 웹사이트에서는 사용자의 요청이나 컨트롤의 입력정보를 유지할 필요가 있기 때문에 ASP.NET은 상태 관리를 할 수 있는 여러가지 기능을 제공합니다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;상태관리의 정보를 저장하는 장소에 따라 두가지로 분류 할 수 있는데, 웹 서버에 저장하는 경우와, 클라이언트에 저장하는 경우가 있습니다. &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=&quot;100%&quot; bgColor=#ffffe0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD bgColor=#ffffe0 vAlign=top width=&quot;100%&quot;&gt;
&lt;P&gt;&lt;STRONG&gt;▶ 상태 정보를 클라이언트에 저장하는 방식&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;뷰 상태(View State) &lt;/LI&gt;
&lt;LI&gt;컨트롤 상태(Control State) &lt;/LI&gt;
&lt;LI&gt;숨겨진 필드(Hidden Field) &lt;/LI&gt;
&lt;LI&gt;쿠키(Cookie) &lt;/LI&gt;
&lt;LI&gt;쿼리 문자열(Query String) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;▶ &lt;/STRONG&gt;&lt;STRONG&gt;상태 정보를 웹 서버에 저장하는 방식&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;응용 프로그램 상태(Application State) &lt;/LI&gt;
&lt;LI&gt;세션(Session) &lt;/LI&gt;
&lt;LI&gt;프로필 속성(Profile Property) &lt;/LI&gt;
&lt;LI&gt;데이터베이스(Database) &lt;/LI&gt;&lt;/UL&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;두가지 방식은 장단점이 존재 하는데요. 일반적으로 데이터가 작고, 중요하지 않은(보안 등의 이유)정보는 클라이언트 측에서 관리하고, 나머지는 웹 서버에서 관리 하는 것이 좋습니다. 여러가지 상태관리 기능 중 Cookie와 Session에 관해 자세히 알아보겠습니다.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=&quot;100%&quot; bocolor=&quot;#c6ff70&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=&quot;100%&quot; bocolor=&quot;#c6ff70&quot;&gt;
&lt;H2&gt;#3. 쿠키(Cookie)&lt;/H2&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;IMG style=&quot;DISPLAY: block; FLOAT: none; MARGIN-LEFT: auto; MARGIN-RIGHT: auto&quot; src=&quot;http://farm4.static.flickr.com/3096/2763701100_e3a7a7c219.jpg&quot;&gt;&lt;/P&gt;
&lt;P align=center&gt;-Fig3. 맛있는 쿠키-&lt;/P&gt;
&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;쿠키는 요청 및 응답하는 과정에 포함되는 텍스트 정보이고 쉽게 구현하여 사용 할 수 있는 방법중에 하나입니다. 일반적인 브라우저에서 최대 4KB의 텍스트 정보를 담을 수 있으며 하나의 사이트는 20개만 허용되며, 모든 사이트를 통틀어서 300개로 제한 됩니다. 만약 이 범위를 넘어 더 많이 저장 하려고 할 경우에는 가장 오래된 쿠키부터 삭제되므로 사용의 주의해야하고, 4KB로 비교적 작은 크기만을 저장하기 때문에 적은 양의 데이터나 ID, 최근 읽은 글, 최근 본 상품과 같은 식별자를 저장할 때 사용하는 것이 적합합니다.&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &lt;/P&gt;
&lt;H3&gt;1. 쿠키의 동작 방식&lt;/H3&gt;
&lt;P&gt;쿠키는 서버에서 생성하여 클라이언트의 브라우저에서 관리하기 때문에 요청시 쿠키를 생성하고 브라우저를 닫을때 쿠키를 파괴합니다. 응답을 통해 얻어온 쿠키는 만료시간 여부에 따라 클라이언트의 PC에 파일로 저장하게 됩니다. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;https://t1.daumcdn.net/cfile/tistory/185CFE184C88A85978&quot;&gt;&lt;IMG style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: block; FLOAT: none; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: auto&quot; title=image border=0 alt=image src=&quot;https://t1.daumcdn.net/cfile/tistory/1730B0174C88A85983&quot; width=637 height=249&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;https://t1.daumcdn.net/cfile/tistory/185CFE184C88A85978&quot;&gt;&lt;/A&gt;-Fig4. 웹 사이트를 처음 요청 할 경우 쿠키 생성 - &lt;/P&gt;
&lt;P align=center&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=left&gt;쿠키의 생성 주기를 살펴보면처음으로 페이지를 요청 할 경우 웹 서버에서는 쿠키를 생성하게 되고, 페이지를 돌려 줄때 HTTP 헤더에 쿠키를 포함하여 돌려 주게 됩니다. 이렇게 넘겨 받은 쿠키는 클라이언트에서 관리 하고 있다가, 다음번 요청때 쿠키를 함께 전송하게 되고, 서버에서는 쿠키 정보를 읽어 이전 상태 정보를 알 수 있게 됩니다. 이때 웹 서버는 Fig5에서 처럼 정보를 변경 할 필요가 있을때 쿠키를 업데이트하여 다시 변경된 쿠키와 함께 응답하게 됩니다.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;https://t1.daumcdn.net/cfile/tistory/183159174C88A85969&quot;&gt;&lt;IMG style=&quot;BORDER-RIGHT-WIDTH: 0px; DISPLAY: block; FLOAT: none; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: auto&quot; title=image border=0 alt=image src=&quot;https://t1.daumcdn.net/cfile/tistory/204DB9154C88A85A7E&quot; width=680 height=249&gt;&lt;/A&gt; -Fig5. 쿠키를 가지고 있을 경우 쿠키 활용-&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;H3&gt;2. ASP.NET에서 쿠키 사용&lt;/H3&gt;
&lt;P&gt;쿠키는 서버로 부터 응답받은 사항이기 때문에 HttpResponse 객체를 통해 클라이언트로 전송 됩니다. 쿠키에 정보를 저장하는 방법은 두가지가 있습니다. Page클래스의 Response 객체를 사용하는 것과 HttpCookie 클래스를 사용하는 방법입니다.&lt;/P&gt;
&lt;PRE class=brush:csharp&gt;
//Response 사용 
Response.Cookies[&quot;쿠키명1&quot;].Value = &quot;쿠키 예제;
Response.Cookies[&quot;쿠키명1&quot;].Expires = DateTime.Now.AddMinutes(30); 

//HttpCookie 클래스 사용 HttpCookie cookie = new HttpCookie(&quot;쿠키명2&quot;);
cookie.Value = &quot;쿠키 예제&quot;;
cookie.Expires = DateTime.Now.AddSeconds(30); 
Response.Cookies.Add(cookie);
&lt;/PRE&gt;
&lt;P align=center&gt;-Code1. 쿠키 저장-&lt;/P&gt;
&lt;P align=left&gt;쿠키명1과 쿠키명2라는 이름을 사용하는 쿠키를 생성 하였고 각각 Value 속성을 통해 상태유지에 필요한 값을 넣어 주었습니다. Expires 속성은 만료 기간인데, 이 속성을 설정하면 쿠키가 클라이언트의 컴퓨터의 파일의 형태로 저장됩니다.&amp;nbsp; 만료기간을 설정하지 않은 쿠키는 브라우저의 메모리에서 관리됩니다. Code1에서 쿠키명1은 30분후에 쿠키를 지우며, 쿠키명2는 30초 후에 쿠키를 지우도록 설정 하였습니다. 만료시간이 지난 쿠키는 클라이언트가 쿠키를 생성한 웹 사이트에 다시 요청을 보낼때 삭제됩니다.&lt;/P&gt;</description>
      <category>.NET/ASP.NET</category>
      <category>쿠키 세션</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/74</guid>
      <comments>https://crynut84.tistory.com/74#entry74comment</comments>
      <pubDate>Thu, 9 Sep 2010 20:20:23 +0900</pubDate>
    </item>
    <item>
      <title>Windows Form에서 WPF Window Application 호출하기</title>
      <link>https://crynut84.tistory.com/72</link>
      <description>&lt;P&gt;&lt;FONT size=3&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;안녕하세요? 맨날맑음 입니다.&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;br /&gt;
Windows Form Application에서 WPF로 만든 Windows Application을 호출하려 합니다.&lt;/SPAN&gt;&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;WPF의 Control을 윈폼에 호스팅 하기 위해서는 ElementHost를 사용하면 되는데요&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;(이에 관한 강좌는 추후에 포스팅 하겠습니다.)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;오늘은 윈폼에서 WPF의 창(Window)를 띄우려고 합니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#ec9c2c&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#1. 프로젝트 생성&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1853C80C4C2819E1B2&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1575740D4C2819E1AE&quot; width=&quot;312&quot; height=&quot;345&quot; /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;우선 Windows Forms 응용프로그램 프로젝트와 WPF 사용자 정의 컨트롤 라이브러리 프로젝트 2개를 생성합니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;FONT color=#ec9c2c&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#2. DLL 참조&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/140EA60C4C2819E107&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/13270A0D4C2819E20F&quot; width=&quot;339&quot; height=&quot;376&quot; /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;윈폼에서 WPF 윈도우를 호출하기 위해 &lt;STRONG&gt;WPF 프로젝트의 DLL(wpfControlLibrary1)과 윈폼에서 WPF 사용을 위한 DLL을 참조&lt;/STRONG&gt; 합니다.&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #f3c534 1px dashed; BORDER-LEFT: #f3c534 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fefeb8; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #f3c534 1px dashed; BORDER-RIGHT: #f3c534 1px dashed; PADDING-TOP: 10px&quot; class=txc-textbox&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;FONT color=#3058d2&gt;Windows Form에서 WPF를 사용하기 위한 DLL 목록&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp; PresentationCore &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp; PresentationFramework &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp; System.Xaml &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp; WindowsBase&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;STRONG&gt;&lt;FONT color=#ec9c2c&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#3. WPF 윈도우 호출&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이제 Windows Form의 소스코드에 WPF 윈도우 호출 코드를 넣습니다.(저는 간단히 버튼을 누를 때 WPF 창이 나오도록 하겠습니다)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; COLOR: blue; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;private&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; button1_Click(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;object&lt;/SPAN&gt;&lt;FONT color=#000000&gt; sender, &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;EventArgs&lt;/SPAN&gt;&lt;FONT color=#000000&gt; e)&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;Window1&lt;/SPAN&gt;&lt;FONT color=#000000&gt; WPF_Wnd = &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;Window1&lt;/SPAN&gt;&lt;FONT color=#000000&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;WPF_Wnd.Show();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; LINE-HEIGHT: normal; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Malgun Gothic'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Malgun Gothic'; mso-font-kerning: 0pt&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;FONT color=#ec9c2c&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#4. 결과 확인&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/193377134C2819E2A3&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;br /&gt;
&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1716170B4C2819E218&quot; width=&quot;591&quot; height=&quot;301&quot; /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/131781184C281A2979&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;Sample01.zip&lt;/a&gt;&lt;/div&gt;
&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;간단한 방법으로 Windows Form에서 WPF 윈도우를 호출 할 수 있습니다. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;감사합니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <category>.NET/WPF</category>
      <category>ElementHost</category>
      <category>Windows Forms</category>
      <category>WPF</category>
      <category>상호운용성</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/72</guid>
      <comments>https://crynut84.tistory.com/72#entry72comment</comments>
      <pubDate>Mon, 28 Jun 2010 12:41:22 +0900</pubDate>
    </item>
    <item>
      <title>[HOONS닷넷 세미나] Advanced Rich Experience</title>
      <link>https://crynut84.tistory.com/71</link>
      <description>&lt;TABLE border=0 cellSpacing=0 cellPadding=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href=&quot;http://www.devmento.co.kr/dtfe/seminar/edumento_detail.jsp?main_id=SDTF3W001&amp;amp;dataSeq=60&quot; target=_blank&gt;&lt;IMG border=0 alt=&quot;&quot; src=&quot;http://www.devmento.co.kr/images/edm/community_seminar_dotnet/community_seminar_dotnet_01.gif&quot;&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;IMG alt=&quot;&quot; src=&quot;http://www.devmento.co.kr/images/edm/community_seminar_dotnet/community_seminar_dotnet_02.gif&quot;&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;IMG border=0 alt=&quot;&quot; src=&quot;http://www.devmento.co.kr/images/edm/community_seminar_dotnet/community_seminar_dotnet_03.gif&quot; useMap=#community_seminar_dotnet_03_Map&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href=&quot;http://www.devmento.co.kr/dtfe/seminar/edumento_detail.jsp?main_id=SDTF3W001&amp;amp;dataSeq=60&quot; target=_blank&gt;&lt;IMG border=0 alt=&quot;&quot; src=&quot;http://www.devmento.co.kr/images/edm/community_seminar_dotnet/community_seminar_dotnet_04.gif&quot;&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;IMG border=0 alt=&quot;&quot; src=&quot;http://www.devmento.co.kr/images/edm/community_seminar_dotnet/community_seminar_dotnet_05.gif&quot; useMap=#community_seminar_dotnet_05_Map&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href=&quot;http://www.devmento.co.kr/dtfe/seminar/edumento_detail.jsp?main_id=SDTF3W001&amp;amp;dataSeq=60&quot; target=_blank&gt;&lt;IMG border=0 alt=&quot;&quot; src=&quot;http://www.devmento.co.kr/images/edm/community_seminar_dotnet/community_seminar_dotnet_06.gif&quot;&gt;&lt;/A&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;IMG alt=&quot;&quot; src=&quot;http://www.devmento.co.kr/images/edm/community_seminar_dotnet/community_seminar_dotnet_07.gif&quot;&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;</description>
      <category>etc/Seminar</category>
      <category>Advanced Rich Experience</category>
      <category>Hoons닷넷</category>
      <category>세미나</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/71</guid>
      <comments>https://crynut84.tistory.com/71#entry71comment</comments>
      <pubDate>Wed, 23 Jun 2010 15:23:44 +0900</pubDate>
    </item>
    <item>
      <title>HOONS.NET 제22회 정기세미나 UX 뽀뽀뽀</title>
      <link>https://crynut84.tistory.com/70</link>
      <description>&lt;br /&gt;

&lt;TABLE id=Table10 border=1 cellSpacing=0 borderColor=#6699cc cellPadding=6 width=650&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;A href=&quot;http://www.hoons.kr/Seminar/Join.aspx&quot; target=_blank&gt;&lt;IMG style=&quot;BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; alt=&quot;훈스닷넷 22회 정기 세미나&quot; src=&quot;http://hoons.kr/FileUpload/dm.jpg&quot;&gt;&lt;/A&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;- 일시 : 2010년 03월 25일(목) 19시 00분&lt;br /&gt;
- 장소 : 포스코센터 5층 (한국마이크로소프트)&lt;br /&gt;
- 참가비 : 삼천원+α (수익금 전액은 후원처 &lt;B&gt;요셉의원&lt;/B&gt;에 기부됩니다.)&lt;br /&gt;
- 세미나 신청: &lt;A href=&quot;http://www.hoons.kr/Seminar/Join.aspx&quot; target=_blank&gt;http://www.hoons.kr/Seminar/Join.aspx&lt;/A&gt;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#6699cc height=30&gt;&lt;FONT color=#ffffff&gt;&lt;STRONG&gt;세미나 Agenda&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE id=Table5 border=0 cellSpacing=1 cellPadding=5 width=640 align=center&gt;
&lt;TBODY&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD height=30&gt;
&lt;DIV align=center&gt;19:00~19:30&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD height=30&gt;
&lt;DIV align=center&gt;등 록&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#f1f1f1&gt;
&lt;TD height=30 align=middle&gt;
&lt;DIV align=center&gt;19:30-20:10&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;DIV align=center&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;실버라이트 4를 통해 보는 RIA의 미래 / 공인석&lt;/DIV&gt;&lt;/DIV&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD height=30 align=middle&gt;
&lt;DIV align=center&gt;20:10~20:20&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD height=40&gt;
&lt;DIV align=center&gt;휴식&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#f1f1f1&gt;
&lt;TD height=30 align=middle&gt;
&lt;DIV align=center&gt;20:20-21:00&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;DIV align=center&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;선구언니와 함께하는 익스프레션 블렌드 4 / 김선구, 이은아, 장미연&lt;/DIV&gt;&lt;/DIV&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD height=30 align=middle&gt;
&lt;DIV align=center&gt;21:00~21:10&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD height=40&gt;
&lt;DIV align=center&gt;휴식&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#f1f1f1&gt;
&lt;TD height=30 align=middle&gt;
&lt;DIV align=center&gt;21:10-21:40&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;DIV align=center&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;누구도 얘기해주지 않았던 WPF 4 이야기, 그리고 그 비밀 / 전호진, 이동규&lt;/DIV&gt;&lt;/DIV&gt;&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD height=12 align=middle&gt;
&lt;DIV align=center&gt;21:40~&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD height=30 align=middle&gt;Q&amp;amp;A / 경품추첨 &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#6699cc height=30&gt;&lt;FONT color=#ffffff&gt;&lt;STRONG&gt;발표 내용 소개&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD align=middle&gt;&lt;br /&gt;

&lt;TABLE id=Table2 cellPadding=5&gt;
&lt;TBODY&gt;
&lt;TR bgColor=#f1f1f1&gt;
&lt;TD height=30 colSpan=2 align=middle&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;&lt;SPAN id=ctl00_ctBody_lblContent0&gt;실버라이트 4를 통해 보는 RIA의 미래&lt;/SPAN&gt;&lt;/STRONG&gt; / 공인석&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD width=560&gt;매년 열리는 MIX의 꽃은 바로 실버라이트죠. 올해, MIX10에서도 실버라이트 4가 베타 딱지를 떼고 RC로 공개되었습니다.&lt;br /&gt;
해마다 지칠줄 모르고 발전을 거듭하는 실버라이트! 이 세션에서는 실버라이트 4의 주요 기능을 소개하고 향후 리치 애플리케이션의 환경에 어떤 영향을 미칠지 예측해 봅니다. &lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#f1f1f1&gt;
&lt;TD height=30 colSpan=2 align=middle&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;&lt;SPAN id=ctl00_ctBody_lblContent0&gt;선구언니와 함께하는 익스프레션 블렌드 4&lt;/SPAN&gt;&lt;/STRONG&gt; / 김선구, 이은아, 장미연&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD width=560&gt;실버라이트와 WPF 프로젝트를 수행할 때 블렌드는 선택이 아닌 필수가 되었습니다.&lt;br /&gt;
이번 MIX10에서 공개된 블렌드 4는 그 동안 디자이너 혼자서는 할 수 없었던 많은 기능이 추가되었습니다. 이제 블렌드로 더욱 인터랙티브한 애플리케이션을 만들 수 있습니다.&lt;br /&gt;
이 세션에서는 블렌드 전문가로서 디자이너에게 꼭 전해주고 싶은 기능과 활용법을 소개합니다. &lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#f1f1f1&gt;
&lt;TD height=30 colSpan=2 align=middle&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;&lt;SPAN id=ctl00_ctBody_lblContent0&gt;누구도 얘기해주지 않았던 WPF 4 이야기, 그리고 그 비밀&lt;/SPAN&gt;&lt;/STRONG&gt; / 전호진, 이동규&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD width=560&gt;차세대 윈도우 리치 클라이언트 애플리케이션 개발을 지원하는 강력한 도구인 WPF 4!&lt;br /&gt;
아무도 해주지 않았던 WPF 4의 '비밀'스러운 이야기를 풀어봅니다. 쉿! &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#6699cc height=30&gt;&lt;FONT color=#ffffff&gt;&lt;STRONG&gt;진행자 소개&lt;/FONT&gt; &lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE id=Table11 border=0 cellSpacing=0 cellPadding=5 width=550 align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=189 align=middle&gt;&lt;IMG id=Img2 src=&quot;http://cfs10.tistory.com/image/2/tistory/2008/12/31/13/56/495afb7914678&quot; width=120&gt; &lt;/TD&gt;
&lt;TD&gt;&lt;SPAN id=ctl00_ctBody_lblContent2&gt;&lt;STRONG&gt;공인석 / 실버라이트 시삽 &lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;HOONS닷넷 실버라이트 분야 시삽을 맡고 있고, 실버라이트가 소개된 이래로 실버라이트에 매진해 왔다. 유령회사 공도소프트라는 블로그를 통하여 기술 자료, 컬럼, 강좌 등을 진행하고 있으며 훈스닷넷을 비롯한 실버라이트 관련 커뮤니티 활성화에 기여하고 있다. &lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=189 align=middle&gt;&lt;IMG src=&quot;http://www.hoons.kr/FileUpload/whitecoco.jpg&quot;&gt; &lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;김선구 / 익스프레션 시삽&lt;/STRONG&gt; &lt;br /&gt;
&lt;br /&gt;웹디자이너, 액션스크립터로 일해 왔다. 일찍이 UX 디자인의 중요성을 깨달아 ,Silverlight의 베타시절부터 Silverlight와 WPF 와 같은 기술로 향상된 UX 구현을 하는 인터랙티브 디자이너로 일하였고, 다수의 교육 및 강의을 진행하였다. 하얀코코의 예제로 배우는 익스프레션 블렌드 &amp;amp; 실버라이트(www.whitecoco.net) 를 운영중이며 마이크로소프트의 MVP이고 닷넷엑스퍼트의 UX컨설턴트로 일하고 있다. &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=189 align=middle&gt;&lt;IMG src=&quot;http://www.hoons.kr/FileUpload/zzangmyon.jpg&quot;&gt; &lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;장미연 / 익스프레션 시삽&lt;/STRONG&gt; &lt;br /&gt;
&lt;br /&gt;Microsoft Blend MVP로 활동하고 있고 HOONS닷넷의 Expression 시삽을 맡고 있으며 각종 세미나와 교육을 진행하고 있다. 현재 바이널(http://www.vi-nyl.com/) 인터렉티브 사업부 VLab에서 근무하고 있으며 디지털교과서를 비롯하여 다양한 WPF &amp;amp; Silverlight 프로젝트를 진행하였다. &quot;짱묜&quot;이라는 닉네임으로 블로그(http://zzangmyon.com/)를 운영중이다. &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=189 align=middle&gt;&lt;IMG src=&quot;http://www.hoons.kr/FileUpload/me_3.jpg&quot;&gt; &lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;이은아 / 익스프레션 시삽&lt;/STRONG&gt; &lt;br /&gt;
&lt;br /&gt;현재 d'strict 에서 UX Designer로 서피스 프로젝트에서 디자인 구현을 하고 있다. Expression MVP이며 , HOONS닷넷에서는 Expression 파트의 시삽으로 활동하고 있다. &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=189 align=middle&gt;&lt;IMG src=&quot;http://www.hoons.kr/FileUpload/hjJun.png&quot;&gt; &lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;전호진 / WPF 시삽&lt;/STRONG&gt; &lt;br /&gt;
&lt;br /&gt;현재 HOONS닷넷 커뮤니티 WPF시삽으로 활동하고 있으며 닷넷 전반적인 기술에 관심이 많다. 아는것은 설명하면서 늘어난다는 생각으로 개인블로그(Life is dynmic :: http://crynut84.tistory.com)를 운영하고 있으며, 특히 최근에는 동영상 압축(Codex)과 영상처리에 집중하고 있다. 또한 항상 긍적적인 마인드를 가지고자 '맨날맑음'이라는 닉네임을 사용한다. &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=189 align=middle&gt;&lt;IMG src=&quot;http://www.hoons.kr/FileUpload/me_twitter_2.png&quot;&gt; &lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;이동규 / WPF 시삽&lt;/STRONG&gt; &lt;br /&gt;
&lt;br /&gt;현재 MSP(Microsoft Student Partners)로 활동중에 있으며, 닷넷 기술에 매우 많은 관심을 가지고 있다. 새로운 신기술을 굉장히 좋아하며 그것을 바로 활용하여 새로운것을 만드는것을 좋아한다. &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#6699cc height=30&gt;&lt;FONT color=#ffffff&gt;&lt;STRONG&gt;세미나 장소&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;br /&gt;
한국 마이크로소프트 - 포스코 센터 5층&lt;br /&gt;
&lt;br /&gt;&lt;IMG src=&quot;http://www.hoonsbara.com/img/posco.jpg&quot;&gt; &lt;br /&gt;
&lt;br /&gt;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#6699cc height=30&gt;&lt;FONT color=#ffffff&gt;&lt;STRONG&gt;경품안내&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE cellSpacing=5 cellPadding=5 width=&quot;100%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;IMG src=&quot;http://hoons.kr/FileUpload/calmee_1.jpg&quot; width=120&gt; &lt;br /&gt;
&lt;B&gt;Calmee Space 콤보 Plus&lt;/B&gt; &lt;br /&gt;
공인석 MVP 협찬 &lt;/TD&gt;
&lt;TD&gt;&lt;IMG src=&quot;http://hoons.kr/FileUpload/movie8.jpg&quot; width=120&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;B&gt;영화예매권 * 2&lt;/B&gt; &lt;br /&gt;
한진수 MVP 협찬 &lt;/TD&gt;
&lt;TD&gt;&lt;IMG src=&quot;http://image.yes24.com/momo/TopCate79/MidCate02/7816343.jpg&quot; width=120&gt; &lt;br /&gt;
&lt;B&gt;아이폰커버&lt;/B&gt; &lt;br /&gt;
Elecom 협찬 &lt;/TD&gt;
&lt;TD&gt;
&lt;H1 style=&quot;FONT-SIZE: 37pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;?&lt;/B&gt;&lt;/H1&gt;&lt;br /&gt;
&lt;br /&gt;&lt;B&gt;상사에게 사랑받을 수 있는 절대 아이템&lt;/B&gt; &lt;br /&gt;
공인석 MVP 협찬 &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;* 경품은 사정에 의해 동급의 다른 제품으로 제공될 수 있습니다. &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#6699cc height=30&gt;&lt;FONT color=#ffffff&gt;&lt;STRONG&gt;스폰서안내&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;IMG src=&quot;http://www.hoons.kr/FileUpload/chan.jpg&quot;&gt; &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <category>etc/Seminar</category>
      <category>Blend4</category>
      <category>Silgerlight4</category>
      <category>wpf4</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/70</guid>
      <comments>https://crynut84.tistory.com/70#entry70comment</comments>
      <pubDate>Tue, 23 Mar 2010 10:25:27 +0900</pubDate>
    </item>
    <item>
      <title>HOONS.NET 20회 정기 세미나 RIA(Rich Interactive Application)</title>
      <link>https://crynut84.tistory.com/69</link>
      <description>&lt;TABLE id=Table10 border=1 cellSpacing=0 borderColor=#6699cc cellPadding=6 width=600&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;P&gt;&lt;A href=&quot;http://www.hoons.kr/Seminar/Join.aspx&quot; target=_blank&gt;&lt;IMG style=&quot;BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px&quot; src=&quot;http://www.hoons.kr/img/seminar/20seminar.jpg&quot;&gt;&lt;/A&gt; &lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;- 일시 : 2010년 02월 25일(목) 19시 00분&lt;br /&gt;
- 장소 :&amp;nbsp;포스코센터 5층 (한국마이크로소프트)&lt;br /&gt;
- 참가비 : 삼천원+α (수익금 전액은 후원처 &lt;B&gt;요셉의원&lt;/B&gt;에 기부됩니다.)&lt;br /&gt;
- 세미나 신청: &lt;A href=&quot;http://www.hoons.kr/Seminar/Join.aspx&quot; target=_blank&gt;http://www.hoons.kr/Seminar/Join.aspx&lt;/A&gt;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#6699cc height=30&gt;&lt;FONT color=#ffffff&gt;&lt;STRONG&gt;세미나 Agenda&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE id=Table5 border=0 cellSpacing=1 cellPadding=5 width=640 align=center&gt;
&lt;TBODY&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD height=30&gt;
&lt;DIV align=center&gt;19:00~19:20&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD height=30&gt;
&lt;DIV align=center&gt;등 록&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#f1f1f1&gt;
&lt;TD height=30 align=middle&gt;
&lt;DIV align=center&gt;19:20-19:40&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;DIV align=center&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;다시 생각해보는 UX와 RIA&lt;/STRONG&gt; / 공인석&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#f1f1f1&gt;
&lt;TD height=30 align=middle&gt;
&lt;DIV align=center&gt;19:40-20:40&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;DIV align=center&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;포토라이트 시즌2: 웹캠과의 만남&lt;/STRONG&gt; / 최다은, 김동욱&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD height=30 align=middle&gt;
&lt;DIV align=center&gt;20:40~20:55&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD height=40&gt;
&lt;DIV align=center&gt;휴식&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#f1f1f1&gt;
&lt;TD height=30 align=middle&gt;
&lt;DIV align=center&gt;20:55-22:00&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD&gt;
&lt;DIV align=center&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;WPF 3D 기초부터 활용까지&lt;/STRONG&gt; / 전호진 이동규&lt;/DIV&gt;&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD height=12 align=middle&gt;
&lt;DIV align=center&gt;22:00~&lt;/DIV&gt;&lt;/TD&gt;
&lt;TD height=30 align=middle&gt;Q&amp;amp;A / 경품추첨 &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#6699cc height=30&gt;&lt;FONT color=#ffffff&gt;&lt;STRONG&gt;발표 내용 소개&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD align=middle&gt;&lt;br /&gt;

&lt;TABLE id=Table2 cellPadding=5&gt;
&lt;TBODY&gt;
&lt;TR bgColor=#f1f1f1&gt;
&lt;TD height=30 colSpan=2 align=middle&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;&lt;SPAN id=ctl00_ctBody_lblContent0&gt;다시 생각해보는 UX와 RIA&lt;/SPAN&gt;&lt;/STRONG&gt; / 공인석&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD width=560&gt;2007년 무렵으로 기억합니다. WPF가 발표되고 WPF/E가 실버라이트로 이름을 바꾸어 발표되면서 마이크로소프트도 본격적으로 RIA시장에 뛰어들게 된 시기였죠. 물론 그 때까지도 UX란 단어와 RIA라는 단어는 수도 없이 많이 사용되었고 갑론을박이 많았지만 닷넷 세상에서는 바로 이 즈음이 시작이었습니다. 그 당시에는 제목에 RIA를 달고 나온 세미나가 참 많았는데, 어느 순간부터 세미나에 RIA란 단어가 사라지고 그 자리를 UX가 채우기 시작했습니다. 이제는 UX나 RIA란 단어를 모르면 트렌드에 뒤처지는 사람으로 취급 받을지도 모른다는 생각도 듭니다. 그런데, 우리는 과연 이 단어의 의미를 생각하면서 사용하고 있을까요? 최근에는 UX와 RIA라는 용어를 전혀 의미에 맞지 않게 사용하는 경우를 상당히 자주 보면서 이런 질문을 떠올려 봅니다. 이번 세션에서는 2010년, 실버라이트가 발표된지 벌써 햇수로 4년이 지난 이 시점에서 UX와 RIA를 다시 한번 조명하고 향후 RIA 개발과 UX에 대해 간단하게 브리핑해 봅니다. &lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#f1f1f1&gt;
&lt;TD height=30 colSpan=2 align=middle&gt;
&lt;DIV align=center&gt;&lt;STRONG&gt;&lt;SPAN id=ctl00_ctBody_lblContent0&gt;포토라이트 시즌2: 웹캠과의 만남&lt;/SPAN&gt;&lt;/STRONG&gt; / 최다은, 김동욱&lt;/DIV&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD width=560&gt;이용자의 정보 생산ㆍ선택능력, 정보 소비 욕구가 커지면서 블로그 등 개인미디어 서비스 이용이 크게 증가하고 있다. 네티즌들이 블로그 및 미니홈피에 게재하는 글이나 사진 컨텐츠 제작이 용이해진 이유중 하나로 디지털카메라, 카메라 폰, 웹캠의 보급 등 배포도구의 간편화를 들 수 있다. 이번에 출시된 실버라이트 4는 웹캠기능을 추가함으로써 인터넷이라는 미디어 환경에서 사용자에게 더욱 편하면서도 풍성한 WEB문서의 작성을 지원하고 있다. 이에 이번 세미나에서는 실버라이트 4에서 어떻게 웹캠기능을 구현 할 수 있는지, &quot;포토라이트 시즌2&quot;를 통해 살펴보고자 한다. &lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#f1f1f1&gt;
&lt;TD height=30 align=middle&gt;&lt;STRONG&gt;&lt;SPAN id=Span1&gt;WPF 3D 기초부터 활용까지&lt;/SPAN&gt;&lt;/STRONG&gt;&amp;nbsp;/ 전호진, 이동규 &lt;/TD&gt;&lt;/TR&gt;
&lt;TR bgColor=#ffffff&gt;
&lt;TD width=560&gt;최근들어 게임, 에니메이션, 영화분야에서도 3D를 사용한 사례가 점점 늘어나면서 사람들의 관심도 점점 높아지고있다. 이에 3D 어플리케이션 개발도 활발해 지고 있다. 3D에 대한 관심은 많지만 비교적 어려운 개념으로 인해 정작 3D 인터페이스를 활용한 응용프로그램은 찾아보기 힘들다. 또한 기본적인 3D 개념을 이해하고 WPF 3D를 유연하게 다루는 개발자는 많지 않아 보인다. 이번 섹션에서 WPF 3D의 기본 개념부터 차근차근 짚어 보고 실전에서 활용 할 수 있는 방법을 알아 본다. &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#6699cc height=30&gt;&lt;FONT color=#ffffff&gt;&lt;STRONG&gt;진행자 소개&lt;/FONT&gt; &lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE id=Table11 border=0 cellSpacing=0 cellPadding=5 width=550 align=center&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=189 align=middle&gt;&lt;IMG id=Img2 src=&quot;http://hoons.kr/FileUpload/Ssuck.png&quot; width=120&gt; &lt;/TD&gt;
&lt;TD&gt;&lt;SPAN id=ctl00_ctBody_lblContent2&gt;&lt;STRONG&gt;공인석 / 실버라이트 시삽&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;HOONS닷넷 실버라이트 분야 시삽을 맡고 있고, 실버라이트가 소개된 이래로 실버라이트에 매진해 왔다. 유령회사 공도소프트라는 블로그를 통하여 기술 자료, 컬럼, 강좌 등을 진행하고 있으며 훈스닷넷을 비롯한 실버라이트 관련 커뮤니티 활성화에 기여하고 있다. &lt;/SPAN&gt;&lt;br /&gt;
&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=189 align=middle&gt;&lt;IMG id=ctl00_ctBody_ctl00_imgUserPicture src=&quot;http://www.hoons.kr/FileUpload/daeun_2.jpg&quot;&gt; &lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;최다은 / 실버라이트 시삽&lt;/STRONG&gt; &lt;br /&gt;
&lt;br /&gt;HOONS닷넷 실버라이트 시삽이며, 야간학부 3학년에 재학중으로 셀러던트의 길을 걷고 있는 중이다. Asp.net 개발 경력을 계속 쌓아 왔으며, Nunit을 이용한 단위테스트에 관심이 많다. 실버라이트로 다양한 어플리케이션을 만들어 보는것이 목표이다. 부족한 내공을 쌓기 위해 늘 노력하는 자세를 잊지 않으려고 한다. 밤하늘을 바라보며 수많은 별들을 사진으로 담는 여행가를 꿈꾸기도 한다. &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=189 align=middle&gt;&lt;IMG id=Img1 src=&quot;http://www.hoons.kr/FileUpload/untitled_3.jpg&quot;&gt; &lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;김동욱 / 실버라이트 시삽&lt;/STRONG&gt; &lt;br /&gt;
&lt;br /&gt;Silverlight를 통해 다양한 프로젝트를 개발해 왔으며 HOONS닷넷에서는 커뮤니티 시삽을 맡고 있다. 지금은 개발자들이 쉴수 있고 또, 편히 놀수 있는 공간과 만남을 위해 노력하고 있다 &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=189 align=middle&gt;&lt;IMG id=Img1 src=&quot;http://hoons.kr/FileUpload/hjJun_2.png&quot;&gt; &lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;전호진 / WPF 시삽&lt;/STRONG&gt; &lt;br /&gt;
&lt;br /&gt;현재 HOONS닷넷 커뮤니티 WPF시삽으로 활동하고 있으며 닷넷 전반적인 기술에 관심이 많다. 아는것은 설명하면서 늘어난다는 생각으로 개인블로그(Life is dynmic :: http://crynut84.tistory.com)를 운영하고 있으며, 특히 최근에는 동영상 압축(Codex)과 영상처리에 집중하고 있다. 또한 항상 긍적적인 마인드를 가지고자 '맨날맑음'이라는 닉네임을 사용한다. &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width=189 align=middle&gt;&lt;IMG id=Img1 src=&quot;http://hoons.kr/FileUpload/me_twitter_3.png&quot;&gt; &lt;/TD&gt;
&lt;TD&gt;&lt;STRONG&gt;이동규 / WPF 시삽&lt;/STRONG&gt; &lt;br /&gt;
&lt;br /&gt;현재 MSP(Microsoft Student Partners)로 활동중에 있으며, 닷넷 기술에 매우 많은 관심을 가지고 있다. 새로운 신기술을 굉장히 좋아하며 그것을 바로 활용하여 새로운것을 만드는것을 좋아한다. &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#6699cc height=30&gt;&lt;FONT color=#ffffff&gt;&lt;STRONG&gt;세미나 장소&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;br /&gt;
한국 마이크로소프트 - 포스코 센터 5층&lt;br /&gt;
&lt;br /&gt;&lt;IMG src=&quot;http://www.hoonsbara.com/img/posco.jpg&quot;&gt; &lt;br /&gt;
&lt;br /&gt;&amp;nbsp; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD bgColor=#6699cc height=30&gt;&lt;FONT color=#ffffff&gt;&lt;STRONG&gt;경품안내&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;
&lt;TABLE cellSpacing=5 cellPadding=5 width=&quot;100%&quot;&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width=320&gt;확정 후 업데이트 예정 &lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;</description>
      <category>etc/Seminar</category>
      <category>HOONS.NET</category>
      <category>세미나</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/69</guid>
      <comments>https://crynut84.tistory.com/69#entry69comment</comments>
      <pubDate>Thu, 25 Feb 2010 01:36:13 +0900</pubDate>
    </item>
    <item>
      <title>YUV Player 만들기</title>
      <link>https://crynut84.tistory.com/68</link>
      <description>&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;안녕하세요? 맨날맑음 입니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;YUV 시퀀스를 재생하기 위해서&lt;STRONG&gt; Raw Data Displayer(RDisp)&lt;/STRONG&gt;라는 프로그램을 사용 하였습니다. 카이스트에서 한국사람이 개발한 프로그램인데요. 여러개의 파일을 동시에 재생하고, 여러가지 YUV 포맷을 지원하여 매우 잘 사용하고 있었습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1843BE264B71626A77&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/17696F024B71626A11&quot; height=&quot;267&quot; /&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;- Fig1. RDisp - &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;저도 몇달전쯤 심심하던차에 YUV Player를 만들어 보려고 시도해 보았습니다. 사실 Color Space에 대한 명확한 이해와 레퍼런스가 부족하여 몇일을 걸려 완성했는데요..(사실 아직 문제점이 많습니다) 만들면서 발생한 문제점과 만드는 방법을 포스팅하려 합니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#1. YUV Plyaer를 만들기 위한 준비&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=694&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=692&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;개발환경&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;IDE : Microsoft Visual Studio 2008&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;언어 : Visual C#&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;프레임워크 : .NET Framework 2.0&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;출력 형식 : Windows Form&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;제가 닷넷을 선택하고 윈폼으로 프로젝트를 한 이유는 간단합니다. MFC나 기타 다른 방법이 있을 테지만 닷넷이 제일 익숙하기 떄문이었습니다. –_-; 그냥 플레이어의 알고리즘만 익히자는 취지도 이 선택에 한 몫 했습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;막상 Player를 만드려고 보니 &lt;STRONG&gt;YUV를 어떻게 화면에 뿌려줄까?&lt;/STRONG&gt; 라는 의문이 들었습니다. YUV를 바로 화면에 뿌릴 수 있는 방법은 애당초 없습니다. 컴퓨터 화면은 RGB포맷을 사용하기 때문이죠. 그렇습니다. &lt;STRONG&gt;YUV를 RGB로 바꿔야 합니다.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=700&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=698&gt;
&lt;P align=left&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;YUV Player의 프로세싱 과정&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;1. YUV 데이터를 읽어 온다. &lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;2. RGB로 변환한다. &lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;3. RGB에 Bitmap 헤더 정보를 입혀 Bitmap으로 변경한다. &lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;4. Bitmap을 fps에 따라 적당한 속도로 화면에 뿌려준다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;대충 위와같은 과정을 거치게 됩니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;YUV와 RGB에 관한 지식이 필요합니다. 이전 포스팅 중 &lt;/SPAN&gt;&lt;A title=http://crynut84.tistory.com/56 href=&quot;http://crynut84.tistory.com/56&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;http://crynut84.tistory.com/56&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;를 참고 하시면 관련 내용을 알 수 있습니다.그리고 위키(&lt;/SPAN&gt;&lt;A title=http://en.wikipedia.org/wiki/YUV href=&quot;http://en.wikipedia.org/wiki/YUV&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;http://en.wikipedia.org/wiki/YUV&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;)를 보시면 좀 더 자세한 정보를 얻을 수 있습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#2. YUV –&amp;gt; RGB&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #f3c534 1px dashed; BORDER-LEFT: #f3c534 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fefeb8; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #f3c534 1px dashed; BORDER-RIGHT: #f3c534 1px dashed; PADDING-TOP: 10px&quot; class=txc-textbox&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: blue; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;public&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;Color&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;YUVtoRGB&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;int&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Y&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;int&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;U&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;int&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;V&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;{&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;Color&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;FromArgb&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Clippiing&lt;/SPAN&gt;&lt;FONT color=#000000&gt;((76284 * (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Y&lt;/SPAN&gt;&lt;FONT color=#000000&gt; - 16) + 104595 * (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;V&lt;/SPAN&gt;&lt;FONT color=#000000&gt; - 128)) &amp;gt;&amp;gt; 16),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Clippiing&lt;/SPAN&gt;&lt;FONT color=#000000&gt;((76284 * (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Y&lt;/SPAN&gt;&lt;FONT color=#000000&gt; - 16) - 53281 * (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;V&lt;/SPAN&gt;&lt;FONT color=#000000&gt; - 128) - 25625 * (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;U&lt;/SPAN&gt;&lt;FONT color=#000000&gt; - 128)) &amp;gt;&amp;gt; 16),&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Clippiing&lt;/SPAN&gt;&lt;FONT color=#000000&gt;((76284 * (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Y&lt;/SPAN&gt;&lt;FONT color=#000000&gt; - 16) + 132252 * (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;U&lt;/SPAN&gt;&lt;FONT color=#000000&gt; - 128)) &amp;gt;&amp;gt; 16));&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;o:p&gt;&lt;FONT color=#000000 face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: blue; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;byte&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Clippiing&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;int&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;data&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;byte&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)((&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;data&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &amp;lt; 0) ? 0 : ((&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;data&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &amp;gt; 255) ? 255 : &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;data&lt;/SPAN&gt;&lt;FONT color=#000000&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;br /&gt;
위와같은 방법으로 YUV를 RGB로 변경 할 수 있습니다. YVUtoRGB 메서드의 인자에 YUV를 넣으면 Color 객체로 return 하게 되어있습니다. Clipping 메서드는 단순히 0~255값을 가지는 RGB요소가 범위를 벗어 났을 경우 범위안으로 넣어주는 역할을 합니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#3. YUV4:2:0 포맷의 이해&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;제가 가장 많은 시간이 걸린 부분입니다. YUV4:2:0 비트스트림에 대한 정확한 이해가 없었기 때문에 RGB로 변경하여 화면에 뿌렸을 경우 계속해서 Color성분이 이상하게 나오는 것이었습니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1146080E4B71626B56&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/142EF0114B71626B15&quot; width=&quot;718&quot; height=&quot;203&quot; /&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;- Fig2. YUV4:2:0의 개념-&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;위 부분을 정확히 이해해야지만 RGB로 컨버팅 하였을때 원하는 영상을 얻을 수 있습니다.&amp;nbsp; 4:2:0이면 Y성분4개가 U,V성분을 하나씩 공유해서 쓴다는 것은 쉽게 알 수 있습니다. 하지만 저는 Y0,Y1,Y3,Y4의 성분이 U0을 공유하여 쓰는 줄 알았습니다. 이걸로 거의 하루의 시간을 버리게 되었죠;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;위의 Fig2에서 알 수 있다 싶이 크기가 Width : 8, Height : 4인 프레임이 있을 때,&amp;nbsp;&lt;STRONG&gt; Y0,Y1,Y8,Y9가 U0과 V0을 공유&lt;/STRONG&gt;하게 됩니다. 요걸 알고 부터, 기본개념을 정확히 익혀야 하는 것을 다시한번 절감하였습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;즉. Y0부분을 RGB로 바꾸고 싶으시면 Y0, U0, V0의 값을 YVUtoRGB 메서드에 인자로 넣어주면 Y0자리의 Color(RGB)가 나오게 됩니다. 그림에 보면 색깔로 자신의 짝을 구분해 놓았습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#4. 타이머 셋팅 영상 플레이&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;여기까지 만들었다면 다음은 간단합니다.해당하는 영상을 얼마의 속도로(fps) 재생할지 결정하여 PictureBox컨트롤에 해당하는 Bitmap을 보여주기만 하면 됩니다. 저는&lt;STRONG&gt; 1초에 30프레임 정도&lt;/STRONG&gt;로 셋팅하였습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#5. 문제점&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;기본적으로 재생하는데는 문제가 없습니다. 하지만 &lt;STRONG&gt;YUV 시퀀스를 로딩하는데 엄청난 시간이 소요&lt;/STRONG&gt;됩니다. 또한 &lt;STRONG&gt;CPU 점유율&lt;/STRONG&gt; 또한 엄청 잡아 먹게 됩니다. 각 픽셀을 RGB로 만드는데 많은 연산이 필요하여 그런 것 같은데요.. BackgroundWorker를 사용하여 쓰레드를 이용하여 처리했음에도 로딩 시간이 필요하게 됩니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이 문제가 사실 제일 큰 문제인데요.. 혹자는 어셈블리 코딩으로 퍼포먼스를 높여야한다고 하고, 닷넷을 선택한 것 자체가 문제라는 소리도 있고, 또.. 제 프로그램의 프로세스 자체가 애초에 틀렸는지도 모르겠습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;가장 의심되는 부분은&lt;STRONG&gt; YUV-&amp;gt;RGB 변경시 많은 연산때문&lt;/STRONG&gt;이라고 여겨 지는데요.. 검색하다보니 RGB Look up table사용하는 방법으로 해결 될 수도 있겠다는 생각도 듭니다.(하지만 정작 테이블 자료는 없더군요..)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;향후 이 문제가 개선되면 RDisp 못지않은 기능을 가진 Player도 만들어 보고 싶군요..&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;제 소스코드와 실행파일을 첨부 합니다. 혹여 YUV 플레이어를 만드시는 분께는 조금이나마 도움이 되길 바라고, 제가 가진 &lt;STRONG&gt;문제점에 대해서는 많은 피드백이 있었으면 좋겠습니다&lt;/STRONG&gt;. 아직 완성단계가 아니기 때문에 예외처리와 소스 구조는 고려하지 않고 작성하였습니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;YUV Player (ver1.0) : OS에 .NET Framework2.0이 설치되어 있어야 합니다. 실행후 YUV 시퀀스를 드래그 앤 드롭 방식으로 끌어오거나 마우스 오른쪽 버튼을 이용하면 메뉴를 이용 하실 수 있습니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/131DC0224B71644132&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/exe.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;YUV Player.exe&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
소스코드 : Microsoft Visual Studio 2008에서 제작 하였습니다. &lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/1844EA234B71648B2D&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;YUV Player.zip&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Player 실행에 필요한 시퀀스는 &lt;A title=&quot;[http://trace.eas.asu.edu/yuv/]로 이동합니다.&quot; href=&quot;http://trace.eas.asu.edu/yuv/&quot; target=_blank&gt;&lt;FONT color=#3058d2&gt;이곳&lt;/FONT&gt;&lt;/A&gt;에서 다운로드 받으실 수 있습니다. 현재 YUV4:2:0 포맷과 CIF Size만 지원됩니다.&lt;br /&gt;
&lt;/SPAN&gt;&lt;/P&gt;</description>
      <category>Project</category>
      <category>YUV Player RGB YUV YCBCR RDisp</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/68</guid>
      <comments>https://crynut84.tistory.com/68#entry68comment</comments>
      <pubDate>Tue, 9 Feb 2010 22:26:03 +0900</pubDate>
    </item>
    <item>
      <title>2010년 정보처리 기사 시험일정!</title>
      <link>https://crynut84.tistory.com/67</link>
      <description>&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;안녕하세요? 맨날맑음 입니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;혹여 올해 시험 보시는분 계신가요?&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;제가 &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;2009년에 후회되는 일 중 하나가 게으름에 정보처리기사&amp;nbsp;시험을&amp;nbsp; &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;3번 신청만 하고 전부 시험장에도 가지 못했어요ㅜ&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; (시험이 일요일인데 항상 토요일에 술 약속이 있었던 것도 한 몫했죠!)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이제 물러설 수 없습니다. 개발자에게 필수인 정보처리기사 올해는 꼭 따야겠죠? ㅎㅎ 올해는 기필코 1회 접수해서 다이렉트로 다다다다~ 따버려야겠어요!!&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;일단 제 일정에 마추어 시험 접수부터 잘해야 합니다.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/116F24284B61826D85&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F116F24284B61826D85&quot; width=&quot;672&quot; height=&quot;563&quot; alt=&quot;&quot; filename=&quot;cfile4.uf@116F24284B61826D85A5AF.jpg&quot; filemime=&quot;&quot;/&gt;
  &lt;p class=&quot;cap1&quot;&gt;- Fig1. 2010년 기사/산업기사 검정시행 일정 (출처:http://www.q-net.or.kr) - &lt;/p&gt;
&lt;/div&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;시험 접수는 &lt;/SPAN&gt;&lt;/STRONG&gt;&lt;A title=&quot;[http://www.q-net.or.kr]로 이동합니다.&quot; href=&quot;http://www.q-net.or.kr/&quot; target=_blank&gt;&lt;FONT color=#3058d2&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Q-NET&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; 이라는 사이트&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;에서 온라인으로 가능하여 매우 편리합니다!!&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;저는 작년에 사서 펴보지도&amp;nbsp;않았던 2009년 정보처리기사 필기 책이 있으니 이걸로 공부해야겠네요. 1회 시험 준비하시는 분들은 슬슬 책장 넘길때가 왔네요.. 올해 시험 보시는 분들 모두 합격 하세요^^ 화이팅~!&lt;/SPAN&gt;</description>
      <category>etc</category>
      <category>정보처리기사</category>
      <category>필승</category>
      <category>합격기원</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/67</guid>
      <comments>https://crynut84.tistory.com/67#entry67comment</comments>
      <pubDate>Thu, 28 Jan 2010 21:33:32 +0900</pubDate>
    </item>
    <item>
      <title>[H.264] Quantization(양자화)과 Zig-zag scanning</title>
      <link>https://crynut84.tistory.com/66</link>
      <description>&lt;H1&gt;&lt;FONT color=#8e8e8e size=2&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 width=700 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=700&gt;&lt;A href=&quot;http://crynut84.tistory.com/55&quot;&gt;&lt;FONT color=#000000 size=2&gt;#1. [H.264] 동영상 압축의 기본 개념&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#000000 size=2&gt; &lt;br /&gt;
&lt;/FONT&gt;&lt;A href=&quot;http://crynut84.tistory.com/56&quot;&gt;&lt;FONT color=#000000 size=2&gt;#2. [H.264] 동영상 압축의 기본 개념 – RGB, YCbCr, 서브샘플링&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;A title=&quot;[http://crynut84.tistory.com/58]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/58&quot; target=_self&gt;&lt;FONT color=#000000&gt;#3. [H.264] Block-based Motion Estimation(ME)&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;A title=&quot;[http://crynut84.tistory.com/61]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/61&quot; target=_self&gt;#4. [H.264] Discrete Cosine Transform(DCT) 이산 코사인 변환&lt;/A&gt;&lt;br /&gt;
&lt;A title=&quot;[http://crynut84.tistory.com/66]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/66&quot; target=_blank&gt;&lt;A title=&quot;[http://crynut84.tistory.com/66]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/66&quot; target=_self&gt;#5. [H.264] Quantization(양자화)과 Zig-zag scanning&lt;/A&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;

&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;안녕하세요? 맨날맑음 입니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;지난시간(4번째)에 DCT에 관해 배워 봤습니다. 이번에는 Quantization과 Zig-zag scanning에 관해 알아보려 하는데요. 그 전에 전체 코딩 프로세싱 과정을 조금 살펴 볼까 합니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;전체적인 그림을 보시면 지금 배우는 것이 ‘코딩과정 중 이부분 이구나’ 라는 걸 알 수 있으실 것입니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#1. H.264 Coding Processing&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/156B4C014B569DCC08&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/202A1C0D4B569DCC57&quot; height=&quot;352&quot; /&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;br /&gt;
- Fig1. Hybrid Coding Algorithm -&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Fig1은 H.264 코덱의 코딩 과정을 나타냅니다. 왼쪽부터 화살표를 따라가 보면 배운대로 MB(매크로블럭) 단위로 이미지를 처리하는 것을 알 수 있지요?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;그리고&lt;STRONG&gt; Intra Mode와 Inter Mode&lt;/STRONG&gt;로 나누어 지는 것을 알 수 있습니다. 두개의 차이는 나중에 자세히 짚어 보겠지만, 일단은 Intra는 현재 프레임만을 이용해 코딩하는 것이고, Inter는 현재프레임과 또 다른 프레임(레퍼런스)를 이용하여 코딩하는 방법이라고 간략히만 알고 넘어 갑니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;우리가 배워온 방법은 Inter이므로 Inter-silce쪽 화살표를 따라 갑니다. Intra pred.를 만나게 되네요. 아직 배우지 않은 내용이므로 Inter모드에서 Intra를 사용 하는구나.. 라고만 알고 넘어 갑니다. (나중에 설명 할 것이므로) 다른 화살표를 따라가니 Inter Pred.가 나옵니다. 바로 프레임과 프레임사이의 유사성을 이용하는 우리가 3번째 시간에 배운 ME에 관한 내용이군요.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Intra라는 것은 잘은 모르겠지만 Inter-Silce 모드에서는 Intra pred.과 Inter pred.(ME)를 하여 둘중에 작은값을 취한다는 것을 쉽게 알 수 잇습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;다음 과정을 보도록 하겠습니다. 둘중 작은 값의 Residual 이미지와 Motion Vector(MV)정보를 취하게 됩니다. 그것을 다시 지난시간에 배운 DCT를 하여 주파수 도메인으로 바꿔주게 되구요..&lt;STRONG&gt; 주파수 도메인으로 바꾸게 되면 DC성분에 에너지가 집중&lt;/STRONG&gt;된다고 하였습니다. 그 다음 과정이 QT/Zig-zag입니다. 바로 오늘 배울 내용이죠^^ &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;예전에 어떤분이 ME과정에서 데이터의 감소가 일어나지 않는다고 잘못되었다고 하였는데요. 오늘 내용을 잘 습득하시면 모든 의문은 사라질 것입니다. 자자.. 각설하고 오늘의 본론으로 들어가도록 하겠습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1843AF0C4B569DCC5C&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/110A17044B569DCC12&quot; height=&quot;119&quot; /&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;br /&gt;
- Fig2. Video Model의 코딩 과정(빨간색은 오늘 배울 내용) -&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#2. Quantization?&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;퀀타이제이션.. 말도 어렵습니다. 한국말로 양자화라고 한다고 하네요..참 코덱쪽은 생소한 언어들 때매 처음에 고생하는 면도 있는것 같습니다. 여튼 우리모두의 백과사전인 위키백과에서 검색해보면.&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE cellSpacing=0 cellPadding=2 width=693 border=0&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=691&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href=&quot;http://ko.wikipedia.org/wiki/%EB%AC%BC%EB%A6%AC%ED%95%99&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;물리학&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;에서 &lt;/SPAN&gt;&lt;A href=&quot;http://ko.wikipedia.org/wiki/%EC%96%91%EC%9E%90%ED%99%94_(%EB%AC%BC%EB%A6%AC%ED%95%99)&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;양자화&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;(quantization)는 연속적으로 보이는 양을 자연수로 셀 수 있는 양으로 재해석하는 것을 이야기한다. &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;즉, 어떤 물리적 양이 연속적으로 변하지 않고 어떤 고정된 값의 정수배만을 가지는 것을 '그 양이 양자화 되었다.'고 한다. &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;예를 들면 전하는 연속적으로 변하는 양이 아니고 어떤 기본량. 즉 전자의 전하 e=4.8x10&lt;/SPAN&gt;&lt;SUP&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;-10&lt;/SPAN&gt;&lt;/SUP&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; (esu)의 정수배로 되어 있다. &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;따라서 전하는 양자화 된 양이라고 할 수 있다. &lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href=&quot;http://ko.wikipedia.org/wiki/%EC%A0%95%EB%B3%B4_%EC%9D%B4%EB%A1%A0&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;정보 이론&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;에서 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;A href=&quot;http://ko.wikipedia.org/w/index.php?title=%EC%96%91%EC%9E%90%ED%99%94_(%EC%A0%95%EB%B3%B4_%EC%9D%B4%EB%A1%A0)&amp;amp;action=edit&amp;amp;redlink=1&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;양자화&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;는 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;A href=&quot;http://ko.wikipedia.org/wiki/%EC%95%84%EB%82%A0%EB%A1%9C%EA%B7%B8&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;아날로그&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt; 데이터, 즉 연속적인 값을 &lt;/STRONG&gt;&lt;/SPAN&gt;&lt;A href=&quot;http://ko.wikipedia.org/wiki/%EB%94%94%EC%A7%80%ED%84%B8&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;디지털&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt; 데이터, 즉 띠엄띠엄한 값으로 바꾸어 근사하는 과정을 뜻한다&lt;/STRONG&gt;. &lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P align=center&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;- 표1. 출처 : 위키백과( &lt;/SPAN&gt;&lt;A title=http://ko.wikipedia.org/wiki/%EC%96%91%EC%9E%90%ED%99%94 href=&quot;http://ko.wikipedia.org/wiki/%EC%96%91%EC%9E%90%ED%99%94&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;http://ko.wikipedia.org/wiki/%EC%96%91%EC%9E%90%ED%99%94&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; ) -&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;요렇게 친절히 설명해 줍니다. 먼 말인지는 잘 모르겠네요 ㅠ 두번째 정의가 좀 코덱의 Quantization 과 일치해 보입니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;지난시간에 배운 내용중 DCT를 수행하면 DC쪽에 에너지가 집중되고, AC는 덜 집중된다고 하였습니다. &lt;STRONG&gt;또한 화질의 차이는 DC성분의 변화에는 민갑하지만 AC 성분의 변화에는 덜 민감한 편이지요&lt;/STRONG&gt;. 즉 AC성분은 좀 생략해도 화질의 차이는 별로 나지 않는다..라는 건데요. 바로 이 원리를 이용하는 것입니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1967DF0E4B53138C30&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;IMG style=&quot;DISPLAY: block; FLOAT: none; MARGIN-LEFT: auto; MARGIN-RIGHT: auto&quot; height=225 src=&quot;https://t1.daumcdn.net/cfile/tistory/11466B0B4B53138D62&quot;&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;- Fig3. DCT후의 데이터 변화 -&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;결국 8×8블럭의 64개의 픽셀들 중 DC가 아닌 AC영역(0.0을 제외한 영역)의 값을 좀 줄여 주자는 것입니다. 왜냐하면? AC는 좀 없어져도 사람들이 화질의 변화를 잘 못느낀다는 거죠!!(대신 데이터는 줄어드니 압축은 되는거죠)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;하지만 이방법은 결국 화질의 손실을 가져오게 됩니다. 사람마다 화질을 보는 차이가 틀리기 때문에 제가 차이 안난다고 느껴도 어떤사람은 차이가 나게 보일 수 도 있는거죠.. 그래서 이러한 압축 방법을 &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;손실 압축&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이라고 합니다. 그러니 AC값을 적당히 날려줘야지 확 날리면 화질의 차이가 확 나게 됩니다. 오늘 마지막에는 소스코드로 이 과정을 구현해서 직접 눈으로 확인도 해보도록 하겠습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#3. Quantization 좀 더 자세히 들여다 보면..&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;그럼 어떠한 방법으로 Quantization을 하는지 보겠습니다. AC 성분을 화질의 저하는 별로 없으면서(잘 느끼지 못하면서) 데이터는 적당히 줄어드는(압축되는) 정도로 날려주어야 하는데.. 대체 그게 어떤 값인가는 참 애매합니다. 그래서 이미 많은 전문가들이 실험적으로 만들어 놓은 Quantization Matrix가 존재합니다. 여러번의 실험 끝에 이정도 값이면 화질의 저하도 별로 없으면서 적당히 압축되 된다는 것이지요.. FIg4를 보시면 휘도(Luminance)와 색(Chrominance)에 관한 행렬을 볼 수 있습니다. 사실 이 Matrix는 Jpeg에서 사용하는 테이블이구요.. H.264에서는 사용자가 Quantization 정도를 옵션으로 조정 할 수 잇게 구성 되어있습니다. 이 수치를 &lt;STRONG&gt;QP(Quantization parameter)&lt;/STRONG&gt;라고 합니다. H.264를 인코딩 하실때 QP를 조정해 보시면 화질의 차이를 느낄 수 있습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/207FA90D4B569DCD96&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1533210D4B569DCD24&quot; height=&quot;234&quot; /&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;br /&gt;
- Fig4. Quantization Matrix (8×8 Block) in jpeg-&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;여기서 포인트! 바로 위에서 DCT후의 블럭이 DC 성분쪽에 큰 값이 몰린다고 하였습니다. AC쪽에는 비교적 작은 값들이 들어 있지요. 그래서 AC 성분을 적당히 없애 줘서 압축을 한다고 하였습니다. 이제 Fig4의 값을 천천히 보는게 되면. DC에는 작은 값이 DC와 멀어 질 수록 점점 큰값이 쓰여있죠? &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;DCT를 수행한 블럭을 Quantization Matrix로 나누어 주는 것&lt;/STRONG&gt;입니다. 그럼 어떻게 될까요? 큰 값으로 나눈 곳은 데이터가 없어질 것이고, 작은 값으로 나눈곳은 적당히 남아 있을 것이라는 것이죠! &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이해 가시나요? AC를 줄이기 위해 Quantization Matrix를 실험적으로 만들었고, 그 Matrix로 나누면 AC의 값이 적당히 없어 진다는 것입니다. 아래의 Fig5에서 보면 대부분의 AC 성분은 0으로 변한 것을 볼 수 있습니다. 그렇습니다. AC성분이 날아간 것이지요.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/141B21284B56A20A5C&quot; height=&quot;149&quot; /&gt;&lt;br /&gt;
&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;- Fig5. DCT-&amp;gt;Quantization 수행 후 Block data의 변화(8×8) -&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#4. Zig-zag scanning&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;다음 인코딩 과정은 Zig-zag scanning입니다.&amp;nbsp; Quantization한 후 MB(메크로블럭)의 값을 살펴 보면 AC쪽은 거의 0으로 변한 것을 볼 수 있다고 하였습니다. Zig-zag scanning은 별게 아니지만 멋진 아이디어 입니다. 여러분이라면 저 데이터를 어떤식으로 구성 하시겠습니까? 2차원 배열이라 생각하고, (0,0), (0,1), (0,3)…&amp;nbsp; 인덱스 순서대로 데이터를 구성 하실건가요?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/171938034B598E2278&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/135C450B4B598E2204&quot; width=&quot;244&quot; height=&quot;244&quot; /&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;br /&gt;
- Fig6. H.265 8×8 Zig-zag scanning - &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;가만히 관찰해보다보니 왼쪽위에는(DC 근처) 데이터가 있지만 다른곳은 거의 데이터가 0이라는것을 알 수 있습니다.(물론 간간히 보이기는 합니다)&lt;STRONG&gt; Fig6에서 같은 순서로 데이터를 저장한다면 어던 차이가 있을까요? 처음에는 값이 들어가지만 스캐닝 할수록 0만 연속적으로 나오게 되겠지요&lt;/STRONG&gt;? &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이쯤대면 센스 만점인 여러분은 왜 지그제그를 하는지 눈치 채셨을 것입니다. 예를들어 스캐닝을 해보니 180,3,2,4,73,0,3,1,6,0,0,0,0,0,0,0……0…0 이런 데이터가 생겼다고 한다면 처음 데이터만 써주고 그다음 수많은 0에 대해서는&lt;STRONG&gt; 0이 몇개인지만 써주므로써 데이터를 줄 일 수 있게 되는 것입니다&lt;/STRONG&gt;.(지그제그는 그냥 값을 얻어오는 순서만들 나타내고 0이 몇개인지 카운터하여 줄이는 것은 다음 시간에 알아볼 Run Length라고 합니다.)&amp;nbsp; 코덱에서는 이과정을 지나서 Entropy coding을 통해 다시한번 데이터를 줄이게 됩니다. 너무 길어지니 그 과정은 다음 강좌로 넘기도록 할게요.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#5. 마치면서&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;오늘은 코덱의 전체적인 인코딩 프로세스를 한번 훝어 보았구요. Quantization과 Zig-zag scanning에 대해 알아 보았습니다. 여기서 &lt;STRONG&gt;개념을 이해하는 것도 중요하지만, ME-&amp;gt;DCT-&amp;gt;Quantization-&amp;gt;Zig-zag로 이루어 지는 과정을 한데 묶어서 이해하는 센스&lt;/STRONG&gt;가 필요합니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;ME를 수행 할때 정확한 MV(motion vector)를 찾아서 잔류 데이터가 거의 없는 Residual image를 얻어 낸다면, 당연히 DCT의 값도 크지 않게 나타날 것입니다. Quantization을 하게되면 거의 모든 값들은 0이 나오게 되겠지요. 그렇다는것은 0의 갯수를 카운터하는 방식(Run length)으로 표현하면 ‘DC의 값은 100이고 나머지 AC의 값인&amp;nbsp; 0이 63개다’ 라고 표현 할 수 있다는 것이고 그만큼 바이너리 코드도 더 줄일 수 있다는 것이죠.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;다음 시간에는 Entropy coding에 관해 설명하고, H.264에서 사용하는 개념들을 좀 짚어 보려고 합니다.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <category>MultiMedia</category>
      <category>DCT</category>
      <category>H.264</category>
      <category>Quantization</category>
      <category>Zig-zag scanning</category>
      <category>양자화</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/66</guid>
      <comments>https://crynut84.tistory.com/66#entry66comment</comments>
      <pubDate>Wed, 20 Jan 2010 15:08:13 +0900</pubDate>
    </item>
    <item>
      <title>Microsoft Office Object를 이용한 PPT Viewer 만들기</title>
      <link>https://crynut84.tistory.com/65</link>
      <description>&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;안녕하세요? 맨날맑음 입니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이번에 만들어 볼 내용은 Microsoft Office Object를 이용한 간단한 PPT Viewer를 만드는 것입니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;제가 2010년 &lt;/SPAN&gt;&lt;A href=&quot;http://hoons.kr/&quot; target=_blank&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;HOONS.NET&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; WPF 시삽으로 활동하게 되면서 어플리케이션은 WPF로 만들어 보겠습니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이 방법의 대략적인 과정을 살펴보면 다음과 같습니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;CENTER&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=500&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=609&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;1. Microsoft Office 12.0 Object Library를 참조한다.(Office 2007 버전에 경우 12.0)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;2. ApplicationClass 객체를 이용하여 PPT 파일을 읽어온다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;3. Presentation 객체를 이용하여 슬라이드를 그림 파일로 하드에 저장한다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;4. 그림 파일을 로딩하여 마치 PTT Viewer인척(?) 한다.&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/CENTER&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;전체적인 과정에서 보듯이 PPT파일을 읽어드려 하드에 그림파일로 저장한 것을 띄우는 방식이기 때문에 PPT에 들어있는 애니메이션 효과를 기대하기는 어렵습니다. 그래서 PTT Viewer인척(?)이라고 한 것 이구요.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;STRONG&gt;#1. 관련 어셈블리 참조하기&lt;br /&gt;
&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;br /&gt;
우선 PPT Viewer를 구현하기 위해 두가지 객체가 필요합니다. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;COM으로 이루어진 Microsoft Office 12.0 Object Library에 포함된 ApplicationClass 객체가 필요하구요. .NET 어셈블리중 Microsoft.Office.Interop.PowerPoint 12.0에 포함된 Presentation 객체가 필요합니다. 두가지 어셈블리를 참조하고 using도 추가해 줍니다.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;CENTER&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=500&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=584&gt;
&lt;P align=left&gt;&lt;FONT color=#0000ff&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;using Microsoft.Office.Interop.PowerPoint; &lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;using Microsoft.Office.Core;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/CENTER&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/130EF60B4B533D373E&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/140FB40D4B533D3843&quot; height=&quot;231&quot; /&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; - Fig1. 관련 어셈블리 참조 - &lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;STRONG&gt;#2. 소스 구현 &lt;br /&gt;
&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/P&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #f3c534 1px dashed; BORDER-LEFT: #f3c534 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fefeb8; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #f3c534 1px dashed; BORDER-RIGHT: #f3c534 1px dashed; PADDING-TOP: 10px&quot; class=txc-textbox&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: blue; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;string&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Path&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;; &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=MsoNormal&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: #2b91af; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Presentation&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;PPT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: blue; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;private&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;void&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;ReadPPTfile&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;() &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;{ &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;ApplicationClass&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;app&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; = &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;new&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;ApplicationClass&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;(); &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;PPT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; = &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;app&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Presentations&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Open&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;(&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Path&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;, &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;MsoTriState&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;msoTrue&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;, &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;MsoTriState&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;msoFalse&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;, &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;MsoTriState&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;msoFalse&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;); &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;app&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Quit&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;(); &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;}&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;
&lt;P&gt;&lt;FONT color=#000000 size=2 face=&quot;맑은 고딕&quot;&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: blue; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;private&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;void&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;MakePPTIamge&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;() &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;{ &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;string&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;myPicturesPath&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; = &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Environment&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;GetFolderPath&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;(&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Environment&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;SpecialFolder&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;MyPictures&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;); &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;for&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; (&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;int&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;i&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; = 0; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;i&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; &amp;lt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;PPT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Slides&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Count&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;; ++&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;i&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;) &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;{&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;PPT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Slides&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;[&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;i&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; + 1].&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Export&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;(&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;string&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Format&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;(&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&quot;{0}\\temp{1}.jpg&quot;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;, &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;myPicturesPath&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;, &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;i&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;), &lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&quot;JPG&quot;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;, &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;(&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;int&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;PPT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Slides&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;[&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;i&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; + 1].&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Master&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Width&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;, (&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;int&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;PPT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Slides&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;[&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;i&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; + 1].&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Master&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Height&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;);&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;} &lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000 size=2 face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;}&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;소스는 간단합니다. &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;ReadPPTfile&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;()에서 &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;ApplicationClass&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; 객체를 이용하여 ppt 파일을 Open하고 &lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: #2b91af; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Presentation&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt; 객체를 return 받아 놓습니다. &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;MakePPTIamge&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;()에서 &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;PPT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Slides&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Export() 메서드를 호출하여 적당한 경로에 jpg 파일(다른 포맷도 지정 가능)로 저장하는 방법입니다! &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;PPT&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Slides&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;.&lt;/SPAN&gt;&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Count&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;를 이용하여 읽어들인 슬라이드 갯수도 알 수 있습니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: '맑은 고딕'; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-size: 10.0pt; mso-fareast-font-family: '맑은 고딕'&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이제 동작에 따라 적당한 그림파일을 로딩하여 사용하면 초간단 PPT Viewer 완성입니다^^;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#3. 마치면서..&lt;br /&gt;
&lt;/SPAN&gt;&lt;br /&gt;
&lt;/STRONG&gt;요방법의 단점을 좀 생각해 보면. 앞서 이야기한 애니메이션 효과는 사용 할 수 없다는 것과.. 많은양의 슬라이드를 로딩할 경우 오래 걸린다는 단점이 있습니다. 하지만 간단한 방법으로 구현 할 수 있고, 웹으로 뷰어를 제공 할 경우 더 어울리는 방법 일 것 같네요.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/1544F9054B53434227&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/exe.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;TinyPPT.exe&lt;/a&gt;&lt;/div&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <category>.NET/WPF</category>
      <category>ApplicationClass</category>
      <category>Microsoft Office Object</category>
      <category>ppt</category>
      <category>PPT Viewer</category>
      <category>Presentation Note</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/65</guid>
      <comments>https://crynut84.tistory.com/65#entry65comment</comments>
      <pubDate>Mon, 18 Jan 2010 02:06:06 +0900</pubDate>
    </item>
    <item>
      <title>윈폼 파일 드레그하기.</title>
      <link>https://crynut84.tistory.com/64</link>
      <description>&lt;DIV&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;안녕하세요? 맨날맑음 입니다.&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;정말 오랜만에 블로깅이네요. 3개월 정도 지난거 같네요. 바쁘다는 핑계로 블로깅도 미루고, 덕분에 블로깅 할 주제는 많이 생겨서 좋은건가요?&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/152E19154B39FA2B3E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F152E19154B39FA2B3E&quot; width=&quot;555&quot; height=&quot;306&quot; alt=&quot;&quot; filename=&quot;cfile23.uf@152E19154B39FA2B3EAB3F.jpg&quot; filemime=&quot;&quot;/&gt;
  &lt;p class=&quot;cap1&quot;&gt;- Fig1. 곰플레이어에서 파일 Drag&amp;Drop을 이용하여 실행시키는 장면 -&amp;#13;&amp;#10;&lt;/p&gt;
&lt;/div&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV style=&quot;TEXT-ALIGN: left&quot;&gt;&lt;FONT size=2&gt;많은 어플리케이션이 위와같이 &lt;STRONG&gt;파일을 Drag&amp;amp;Drop만으로 열 수 있는 기능&lt;/STRONG&gt;을 제공해 주고있습니다. 실제 파일을 다루는 어플리케이션을 개발하다보면 빠지면 서운한 기능일텐데요. .Net WinForm에서는 아주 쉬운방법으로 위와 같은 기능을 구현 할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;FONT color=#ec9c2c&gt;#1. Windows Forms 프로젝트 생성.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;FONT size=2&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/142EAD174B39FC681A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F142EAD174B39FC681A&quot; width=&quot;630&quot; height=&quot;375&quot; alt=&quot;&quot; filename=&quot;cfile4.uf@142EAD174B39FC681AEE0D.jpg&quot; filemime=&quot;&quot;/&gt;
  &lt;p class=&quot;cap1&quot;&gt;- Fig2.  Windows Forms 프로젝트 생성 -&lt;/p&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;TEXT-ALIGN: left&quot;&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT color=#ec9c2c&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#2. ListBox 추가&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/FONT&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;FONT size=2&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/13450E174B39FD0A03&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F13450E174B39FD0A03&quot; width=&quot;557&quot; height=&quot;551&quot; alt=&quot;&quot; filename=&quot;cfile8.uf@13450E174B39FD0A0310B6.jpg&quot; filemime=&quot;&quot;/&gt;
  &lt;p class=&quot;cap1&quot;&gt;- Fig3. Form에 ListBox를 추가한 모습 -&lt;/p&gt;
&lt;/div&gt;
&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV style=&quot;TEXT-ALIGN: left&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;여기서 ListBox는&amp;nbsp;Form위로 드레그 되어 들어온 파일의 정보를 보기위한 간단한 용도입니다.&lt;br /&gt;
&lt;br /&gt;&lt;FONT color=#ec9c2c&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#3. 드레그 드롭 관련 지식&lt;/SPAN&gt;&lt;br /&gt;
&lt;/STRONG&gt;&lt;/FONT&gt;
&lt;BLOCKQUOTE&gt;&lt;STRONG&gt;&lt;FONT color=#49b5d5&gt;&lt;FONT color=#3058d2&gt;public virtual bool&lt;/FONT&gt; &lt;/FONT&gt;&lt;FONT color=#193da9&gt;AllowDrop &lt;/FONT&gt;{&lt;FONT color=#3058d2&gt; get; set; &lt;/FONT&gt;}&lt;/STRONG&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;- 사용자가 컨트롤로 끌어 온 데이터가&amp;nbsp; 컨트롤에서 허용되는지 여부를 나타내는 값을 가져오거나 설정.&lt;br /&gt;
&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;- 반환 값:&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt; 끌어서 놓기 작업을 수행할 수 있으면 true이고, 그렇지 않으면 false, 기본값은 false&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/BLOCKQUOTE&gt;&lt;br /&gt;
Controls의 &lt;STRONG&gt;AllowDrop 프로퍼티를 이용하면 Control에 Drag로 데이터를 끌어올 수 있는지 없는지 설정&lt;/STRONG&gt; 할 수 있습니다. 이말은 즉 Controls를 상속받는 많은 WinForm과 Control들이 AllowDrop 프로퍼티를 사용 할 수 있다는 말입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;BLOCKQUOTE&gt;&lt;STRONG&gt;Drag&amp;amp;Drop 관련 이벤트&lt;br /&gt;
&lt;FONT color=#3058d2&gt;Controls.DragDrop&lt;/FONT&gt;&lt;/STRONG&gt; : 드레그&amp;nbsp;작업이 완료되면 발생.&lt;br /&gt;
&lt;FONT color=#3058d2&gt;&lt;STRONG&gt;Controls.DragOver&lt;/STRONG&gt; &lt;/FONT&gt;: 드레그한 개체가 컨트롤 위로 올라오면 발생.&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT color=#3058d2&gt;Controls.DragEnter&lt;/FONT&gt;&lt;/STRONG&gt; : 드레그한 개체가 컨트롤 범위 안으로 들어오면 발생.&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT color=#3058d2&gt;Controls.DragLeave&lt;/FONT&gt;&lt;/STRONG&gt; : 드레그한 개체가 컨트롤 범위&amp;nbsp;밖으로 나가면&amp;nbsp;발생.&lt;br /&gt;
&lt;/BLOCKQUOTE&gt;&lt;br /&gt;
4개의 이벤트가 있는데요. 우리가 사용 할 이벤트는 &lt;STRONG&gt;DragDrop과 DragOver&lt;/STRONG&gt; 두개 입니다.&lt;br /&gt;
&lt;br /&gt;
&lt;BLOCKQUOTE&gt;&lt;STRONG&gt;&lt;FONT color=#49b5d5&gt;DragEventHandler&lt;/FONT&gt;의 &lt;/STRONG&gt;&lt;FONT color=#49b5d5&gt;&lt;STRONG&gt;DragEventArgs&lt;br /&gt;
&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt;&lt;STRONG&gt;X&lt;/STRONG&gt; : 화면 좌표로 나타난 마우스 포인터의 x좌표.&lt;br /&gt;
&lt;/FONT&gt;&lt;STRONG&gt;Y&lt;/STRONG&gt; : 화면 좌표로 나타난 마우스 포인터의 Y좌표.&lt;br /&gt;
&lt;STRONG&gt;Data.GetDataPresent&lt;/STRONG&gt; : 인스턴스에 저장된 데이터가 지정된 형식과 관련 있는지 확인.&lt;br /&gt;
&lt;STRONG&gt;Effect&lt;/STRONG&gt; : 드레그한 개체에대한 마우스 커서를 결정.&lt;br /&gt;
&lt;/BLOCKQUOTE&gt;&lt;br /&gt;
이벤트관련 클래스의 사용법도 알아보았으니 이제 구현을 해봅니다!&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;&lt;FONT color=#ec9c2c&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#4. 코드 구현&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;br /&gt;

&lt;DIV style=&quot;BORDER-BOTTOM: #f3c534 1px dashed; BORDER-LEFT: #f3c534 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fefeb8; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #f3c534 1px dashed; BORDER-RIGHT: #f3c534 1px dashed; PADDING-TOP: 10px&quot; class=txc-textbox&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: blue; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;using&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;System&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Windows&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Forms&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: blue; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;namespace&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;DragSample&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;partial&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;class&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;Form1&lt;/SPAN&gt;&lt;FONT color=#000000&gt; : &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;Form&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;public&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Form1&lt;/SPAN&gt;&lt;FONT color=#000000&gt;()&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;InitializeComponent&lt;/SPAN&gt;&lt;FONT color=#000000&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;드레그를&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;허용&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;this&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;AllowDrop&lt;/SPAN&gt;&lt;FONT color=#000000&gt; = &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;true&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//Drag&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;관련이벤트&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;연결------------------------------------------------&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;this&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;DragOver&lt;/SPAN&gt;&lt;FONT color=#000000&gt; += &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;DragEventHandler&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Form1_DragOver&lt;/SPAN&gt;&lt;FONT color=#000000&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;this&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;DragDrop&lt;/SPAN&gt;&lt;FONT color=#000000&gt;+=&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;new&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;DragEventHandler&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Form1_DragDrop&lt;/SPAN&gt;&lt;FONT color=#000000&gt;);&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;드레그한&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;개체가&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;폼위로&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;올라올때--------------------------------------&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Form1_DragOver&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;object&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;sender&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;DragEventArgs&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;e&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;드레그하는&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;개체가&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;파일이면&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;e&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Data&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;GetDataPresent&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;DataFormats&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;FileDrop&lt;/SPAN&gt;&lt;FONT color=#000000&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;마우스&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;커서를&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt; Copy&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;모양으로&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;바꿔준다&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;e&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Effect&lt;/SPAN&gt;&lt;FONT color=#000000&gt; = &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;DragDropEffects&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Copy&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;아닐경우&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;커서의&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;모양을&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Courier New'; COLOR: green; FONT-SIZE: 9pt; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;θ&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;요런&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;모양으로&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;바꾼다&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;e&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Effect&lt;/SPAN&gt;&lt;FONT color=#000000&gt; = &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;DragDropEffects&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;None&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;o:p&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;드레그한&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;개체를&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;폼위에&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;올려&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;놓았을때----------------------------------&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;void&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Form1_DragDrop&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;object&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;sender&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;DragEventArgs&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;e&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;객체들의&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;이름을&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; string 배열에 &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;얻어온다&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt;[] &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;files&lt;/SPAN&gt;&lt;FONT color=#000000&gt; = &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;e&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Data&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;GetData&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;DataFormats&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;FileDrop&lt;/SPAN&gt;&lt;FONT color=#000000&gt;) &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;as&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt;[];&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;files&lt;/SPAN&gt;&lt;FONT color=#000000&gt;!=&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;null&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;foreach&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;file&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;in&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;files&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;끌어온&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;파일명을&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;리스트박스에&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;달아준다&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;listBox1&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Items&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Add&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;file&lt;/SPAN&gt;&lt;FONT color=#000000&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;MARGIN: 0cm 0cm 0pt&quot; class=MsoNormal&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; FONT-SIZE: 9pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;}&lt;br /&gt;
&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;간단한 소스라 따로 설명은 없어도 될 것 같습니다. 유의 할 점은 &lt;FONT face=&quot;Bitstream Vera Sans Mono&quot;&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;e&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Data&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;GetData&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #2b91af&quot;&gt;DataFormats&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;FileDrop&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)에서 반환값이 string 배열이라는 점입니다.&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/187D39034B3A132C64&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/exe.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;DragSample.exe&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/12254F034B3A132C1C&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;DragSample.zip&lt;/a&gt;&lt;/div&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
이와같은 방법을 응용하면 ListBox간 아이템 이동이라던지, 대부분의 Drag&amp;amp;Drop 기능은 구현 가능 할 것 같습니다.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/DIV&gt;</description>
      <category>.NET/Visual C#</category>
      <category>AllowDrop</category>
      <category>Drag &amp;amp; Drop</category>
      <category>윈폼</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/64</guid>
      <comments>https://crynut84.tistory.com/64#entry64comment</comments>
      <pubDate>Tue, 29 Dec 2009 23:19:49 +0900</pubDate>
    </item>
    <item>
      <title>화살표 그리기(.NET Pen Class)</title>
      <link>https://crynut84.tistory.com/48</link>
      <description>&lt;br /&gt;
안녕하세요? 맨날맑음입니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;화살표&lt;/STRONG&gt;를 그려야 할 일이 생겨서 어떻게 그릴까 생각하다가, Line을 여러개 그려서 화살표를 만들려고 했습니다.&lt;br /&gt;
선의 각도에 따라 화살표 머리 부분의 각도가 변하기 때문에 수학을 못하는 저로써는 화살표 그리는 것 조차도 힘든일이 었습니다.&lt;br /&gt;
&lt;br /&gt;하지만! &lt;STRONG&gt;.NET의 Pen 클래스는 Line의 끝점들의 모양을 변경&lt;/STRONG&gt;시켜 주는 기능을 제공합니다.&lt;br /&gt;
Pen 클래스의 좀더 자세한 설명은 아래의 MSDN 도움말을 참조 하시면 됩니다.&lt;br /&gt;
&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.drawing.pen(en-us,VS.85).aspx&quot;&gt;http://msdn.microsoft.com/ko-kr/library/system.drawing.pen(en-us,VS.85).aspx&lt;/A&gt;&lt;br /&gt;
&lt;br /&gt;MSDN에서 Pen 클래스의 속성을 보면 StartCap 과 EndCap이 있습니다. 이것이 선의 끝모양을 지정하는 속성입니다. 그럼 선의 시작과 끝 모양을 화살표로 바꾸어 보겠습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;BLOCKQUOTE&gt;&lt;STRONG&gt;&lt;FONT color=#49b5d5&gt;Pen &lt;/FONT&gt;pen = new &lt;FONT color=#49b5d5&gt;Pen&lt;/FONT&gt;(&lt;FONT color=#49b5d5&gt;Color&lt;/FONT&gt;.Blue, 6);&lt;br /&gt;
pen.StartCap = &lt;FONT color=#49b5d5&gt;LineCap&lt;/FONT&gt;.ArrowAnchor;&lt;br /&gt;
pen.EndCap = &lt;FONT color=#49b5d5&gt;LineCap&lt;/FONT&gt;.ArrowAnchor;&lt;/STRONG&gt;&lt;/BLOCKQUOTE&gt;위의 소스에서 처럼 Pen 객체를 생성하고, 해당하는Cap 속성을 바꿔주는 아주 간단한 방법으로 끝모양을 바꿔줄 수 있습니다.&amp;nbsp; &lt;STRONG&gt;LineCap 사용을 위해서는 &lt;FONT color=#3058d2&gt;using System.Drawing.Drawing2D;&lt;/FONT&gt;을 해주셔야 합니다.&lt;/STRONG&gt;&lt;br /&gt;
&lt;FONT color=#49b5d5&gt;&lt;FONT color=#000000&gt;화살표 모양 이외에도 여러 모양을 지정 할 수 있습니다. &lt;/FONT&gt;&lt;STRONG&gt;LineCap&lt;/STRONG&gt;&lt;/FONT&gt;&lt;FONT color=#000000&gt; 을 살펴 보면 열거형으로 되어 있습니다. 각각의 멤버의 의미를 보면 다음과 같습니다.&lt;br /&gt;

&lt;BLOCKQUOTE&gt;&lt;SPAN class=selflink&gt;&lt;STRONG&gt;Flat&lt;/STRONG&gt; : 일직선 형태의 끝 모양을 지정합니다.&lt;br /&gt;
&lt;/SPAN&gt;&lt;SPAN class=selflink&gt;&lt;STRONG&gt;Square&lt;/STRONG&gt; : 정사각형 형태의 선 끝 모양을 지정합니다.&lt;br /&gt;
&lt;SPAN class=selflink&gt;&lt;STRONG&gt;Round&lt;/STRONG&gt; : 둥근 선 끝 모양을 지정합니다.&lt;br /&gt;
&lt;SPAN class=selflink&gt;&lt;STRONG&gt;Triangle&lt;/STRONG&gt; : 삼각형 선 끝 모양을 지정합니다.&lt;br /&gt;
&lt;SPAN class=selflink&gt;&lt;STRONG&gt;NoAnchor&lt;/STRONG&gt; : 앵커를 지정하지 않습니다.&lt;br /&gt;
&lt;SPAN class=selflink&gt;&lt;STRONG&gt;SquareAnchor&lt;/STRONG&gt; : 정사각형 앵커 선 끝 모양을 지정합니다.&lt;br /&gt;
&lt;/SPAN&gt;&lt;SPAN class=selflink&gt;&lt;STRONG&gt;RoundAnchor&lt;/STRONG&gt; : 둥근 앵커 끝 모양을 지정합니다.&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN class=selflink&gt;&lt;STRONG&gt;DiamondAnchor&lt;/STRONG&gt; : 다이아몬드 앵커 끝 모양을 지정합니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/SPAN&gt;&lt;SPAN class=selflink&gt;&lt;STRONG&gt;ArrowAnchor&lt;/STRONG&gt; : 화살표 모양의 앵커를 지정합니다.&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN class=selflink&gt;&lt;STRONG&gt;Custom&lt;/STRONG&gt; : 사용자 지정 선 끝 모양을 지정합니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/SPAN&gt;&lt;SPAN class=selflink&gt;&lt;STRONG&gt;AnchorMask&lt;/STRONG&gt; : 선 끝 모양이 앵커 모양인지 여부를 검사하는 데 사용되는 마스크를 지정합니다.&lt;/SPAN&gt;&lt;/BLOCKQUOTE&gt;아래와 같이 간단하게 Windows Form 프로젝트를 생성해서 Paint 이벤트 핸들러에서 화살표를 그려 보겠습니다.&lt;/FONT&gt;&lt;br /&gt;
&lt;PRE class=c#:firstline[1] name=&quot;code&quot;&gt;using System.Drawing;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Paint += new PaintEventHandler(Form1_Paint);
        }

        void Form1_Paint(object sender, PaintEventArgs e)
        {
            Pen pen = new Pen(Color.Blue, 6); //Pen 객체 생성
            pen.StartCap = LineCap.ArrowAnchor; //Line의 시작점 모양 변경
            pen.EndCap = LineCap.ArrowAnchor; //Line의 끝점 모양 변경
            e.Graphics.DrawLine(pen, 20, 50, 300,50); //Line 그리기
        }
    }
}
 &lt;/PRE&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/192B0A0E4A5DAB802E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F192B0A0E4A5DAB802E&quot; width=&quot;323&quot; height=&quot;138&quot; alt=&quot;&quot; filename=&quot;포맷변환_pen2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
이와같이 복잡한 화살표 알고리즘 없이 Pen 클래스의 속성 변경 만으로도 간단하게 화살표를 그릴 수 있습니다.&lt;br /&gt;
참 쉽죠잉~&lt;IMG class=txc-emo border=0 src=&quot;http://deco.daum-img.net/contents/emoticon/etc_23.gif&quot;&gt;</description>
      <category>.NET/Visual C#</category>
      <category>.NET</category>
      <category>LineCap</category>
      <category>pen</category>
      <category>화살표</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/48</guid>
      <comments>https://crynut84.tistory.com/48#entry48comment</comments>
      <pubDate>Thu, 22 Oct 2009 19:12:00 +0900</pubDate>
    </item>
    <item>
      <title>2PM 재범 탈퇴(네티즌탓? 언론탓!)</title>
      <link>https://crynut84.tistory.com/62</link>
      <description>&lt;P&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;안녕하세요? 맨날맑음 입니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;나름 개발자 기술 블로그에 이런 글은 어울리지 않을 수도 있지만, 이번 사건을 보면서 느낀점을 써볼까 합니다.&lt;br /&gt;
&lt;br /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;
&lt;CENTER&gt;
&lt;CENTER&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/161CB5104AA7A6FB69&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F161CB5104AA7A6FB69&quot; width=&quot;240&quot; height=&quot;400&quot; alt=&quot;&quot; filename=&quot;2009-09-09 22;00;01.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
 
&lt;CENTER&gt;(그림1. 출처 : &lt;A href=&quot;http://blog.naver.com/gksksla2761?Redirect=Log&amp;amp;logNo=100075692226&quot;&gt;http://blog.naver.com/gksksla2761?Redirect=Log&amp;amp;logNo=100075692226&lt;/A&gt; &lt;A href=&quot;http://imagesearch.naver.com/search.naver?where=idetail&amp;amp;rev=5&amp;amp;query=%C0%E7%B9%FC&amp;amp;from=image&amp;amp;ac=-1&amp;amp;sort=0&amp;amp;res_fr=0&amp;amp;res_to=0&amp;amp;merge=0&amp;amp;spq=0&amp;amp;start=584&amp;amp;a=pho_l&amp;amp;f=tab&amp;amp;r=584&amp;amp;u=http%3A%2F%2Fblog.naver.com%2Fgksksla2761%3FRedirect%3DLog%26logNo%3D100075692226&amp;amp;thumbnail=http%3A%2F%2Fthumbview02.search.naver.com%2Fthumbnails%3Fq%3Dhttp%3A%2F%2Fblogfiles.naver.net%2F20090719_276%2Fgksksla2761_1248004844311K3gjA_jpg%2F2009-05-24_10_gksksla2761.jpg&amp;amp;signature=114388114037&amp;amp;gdid=90000003_00000000000000174CF9E0C2&quot;&gt;&lt;/A&gt;) &lt;/CENTER&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CENTER&gt;&lt;/CENTER&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;요즘 연예계 가장 큰 이슈 중 하나는 잘나가는 &lt;STRONG&gt;2PM이라는 아이돌 그룹의 멤버인 재범의 한국 비하와 그로인한 탈퇴 / 미국행&lt;/STRONG&gt;입니다. 저는 26살 먹은 남자로 2PM의 팬도 아니고, 2PM이란 그룹은 알고 있지만 박재범이라는 이름까지는 알지 못하는 그런 평범한 학생입니다. 물론 소녀시대나, 원더걸스 같은 여성 그룹의 재롱이 더 좋아질 나이라고 생각합니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;br /&gt;
언제나처럼 네이버 메인기사를 훝어보다가 '재범 한국 비하'라는 언론들의 기사를 보았습니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;A title=&quot;[http://www.sportsseoul.com/news2/entertain/broad/2009/0906/20090906101040200000000_7400729048.html]로 이동합니다.&quot; href=&quot;http://www.sportsseoul.com/news2/entertain/broad/2009/0906/20090906101040200000000_7400729048.html&quot; target=_blank&gt;&lt;FONT color=#193da9&gt;2PM 재범 한국 비하 발언 파문 &quot;나는 한국이 싫다&quot;&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;A title=&quot;[http://www.ggemguide.com/p_view.htm?uid=53181]로 이동합니다.&quot; href=&quot;http://www.ggemguide.com/p_view.htm?uid=53181&quot; target=_blank&gt;&lt;FONT color=#193da9&gt;“2PM 재범, 양키 고 홈”… 가요 팬들 ‘한국 비하’에 뿔났다&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;A title=&quot;[http://www.hkn24.com/news/articleView.html?idxno=32307]로 이동합니다.&quot; href=&quot;http://www.hkn24.com/news/articleView.html?idxno=32307&quot; target=_blank&gt;&lt;FONT color=#193da9&gt;2PM 재범, &quot;한국 역겹다&quot; 비하발언 공식 사과 &lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;제목만 보아도 굉장히 '강한 표현'을 사용해서 연예계 기사는 관심 없는 저도 클릭해 보게 만들었습니다. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;br /&gt;
이 기사들을 보면서 저는 박재범이 나쁘구나 생각했습니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;대부분이 박재범은 한국에 대해 모욕적인 발언을 했고, 한국을 비하했다는 내용의 보도 였습니다. 그 내용들이 사실이기도 했습니다.(물론 해석의 차이에서 생기는 것 일수도..)&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;br /&gt;
박재범군이 연습생 시절(어린나이의)에 자신의 미래에 대한 불안과, 문화의 차이에 대한 불안이 대부분 이었습니다. 이 시점에 지인으로 부터 온 '재범이 불쌍해..'라는 문자에 저는 &lt;STRONG&gt;'그놈은 한국을 무시했어'&lt;/STRONG&gt;라고 응답할 만큼 반감을 가지게 되었습니다.&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;br /&gt;
한편으론 4년전.. 미래가 불확실 할때 저지른 행동이 이런 파장을 일으킨대 대한 동정심도 있었습니다. 일반인이라면 누구나 할 수 있는 '대한민국에 대한 비평'을 우리가 과민 반응한다는 생각도 했습니다.&lt;br /&gt;
&lt;br /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;그러면서 네티즌들의 일반적인 반응이었던(2PM 팬들을 제외) &lt;STRONG&gt;'2PM에서 탈퇴해라.', '양키는 미국으로 돌아가라'&lt;/STRONG&gt; 라는 반응은 좀 너무하다고 생각했습니다.&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;
&lt;P&gt;&lt;br /&gt;
재범은 당시 어린나이였고, 누구나 이런 생각을 할 수 있다고 생각했습니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;현재.. 재범이 2PM을 탈퇴하고, 미국으로 돌아간 시점에 올라온 기사를 보면 어처구니가 없습니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;대부분의 기사는 네티즌의 마녀사냥으로 재범이 2PM을 탈퇴하고 미국으로 갔다는 기사였습니다. 재범을 동정하는 기사지요..&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;A title=&quot;[http://www.gooddaysports.co.kr/news/?cset=star&amp;amp;bset=view&amp;amp;tot_code=47&amp;amp;code=8368]로 이동합니다.&quot; href=&quot;http://www.gooddaysports.co.kr/news/?cset=star&amp;amp;bset=view&amp;amp;tot_code=47&amp;amp;code=8368&quot; target=_blank&gt;&lt;FONT color=#193da9&gt;'2PM' 탈퇴 박재범, 시애틀 공항 도착해 어머니 안고 '눈물' &lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;A title=&quot;[http://www.dipts.com/news/index.html?mode=view&amp;amp;cate1_id=15&amp;amp;cate2_id=126&amp;amp;number=17510]로 이동합니다.&quot; href=&quot;http://www.dipts.com/news/index.html?mode=view&amp;amp;cate1_id=15&amp;amp;cate2_id=126&amp;amp;number=17510&quot; target=_blank&gt;&lt;FONT color=#193da9&gt;스물 둘 재범의 선택, 남은건 눈물과 ‘돌아오라’는 팬들의 메아리 뿐&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;A title=&quot;[http://www.maxmovie.com/movie_info/ent_news_view.asp?mi_id=MI0085651642]로 이동합니다.&quot; href=&quot;http://www.maxmovie.com/movie_info/ent_news_view.asp?mi_id=MI0085651642&quot; target=_blank&gt;&lt;FONT color=#193da9&gt;2PM 재범, 어머니 품에 안겨 ‘오열’ 팬들은 구명운동 나서&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;이 기사를 보면서 저는 재범이 불쌍하다고 느꼈습니다. 제가 문제라고 생각한것은 이것입니다. &lt;STRONG&gt;대부분의 네티즌은 기사를 믿을 수 밖에 없습니다&lt;/STRONG&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
지금 현실을 보면 재범이 네티즌의 마녀사냥의 희생양이고, 네티즌이 재범을 2PM에서 탈퇴 시키고, 미국으로 가게 만들었다는 뉘양스로 쓰여 있는게 사실입니다.&lt;br /&gt;
제가 강조하고 싶은 부분은 언론이 사람들을 선동했다는 것입니다. 2PM에 별 관심이 없는 저 조차 이렇게 느끼게 되는데, 다른 사람들도 저와 같은 생각일 것이라는 것입니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;나쁜놈이라고 보도하던 기사들이 재범이 미국으로 돌아 간 후 부터는 네티즌이 그렇게 만들었다고 선동하고 있습니다. 과연, 언론의 이런 자극적인 제목의 기사가 없었다면 이렇게 까지 생각하게 됬을까요?&lt;/STRONG&gt;&lt;br /&gt;
&lt;br /&gt;물론 저만 이런 생각이 들 수 도 있습니다. 허나 저는 이번 사태는 앞다투어 자극적인 제목으로 가쉽거리를 만들어낸 언론의 힘도 무시 할 수 없다는 겁니다. 세상..참 무섭습니다. 어떤 기사에는 '파시즘'을 들먹이며, 군중심리에 대해 표현하고 있더군요.. 과연 이런 군중 심리를 일으킨 주범은 누구일지.. 생각하게 되는 사건입니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
ps.. 글을 쓰던 도중 술자리가 생겨, 조금 횡설 수설하게 된 면이 있군요.. 제가 강조하고 싶은 것은 지금의 사건을 군중심리, 네티즌 때문이라 보도하는 언론이 자신들의 보도 때문이라는 생각은 하지 않는 데 있습니다. 초기 기사엔 재범이 나쁘다는 것만 강조해온 언론이 이제는 네티즌의 속칭 '마녀사냥 ' 때문에 이런일이 일어났다고 보도한다는 거지요..&lt;br /&gt;
&lt;br /&gt;좀 더 생각해봐야 할 일인것 같습니다. 안타깝네요. &lt;STRONG&gt;한국을 욕했다고 배척하기 보단.. 그걸 고칠 수 있도록 포용하는 방법도 좋은 생각이라는 생각이 듭니다.&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;CENTER&gt;&lt;/CENTER&gt;
&lt;CENTER&gt;&lt;/CENTER&gt;</description>
      <category>etc</category>
      <category>2pm</category>
      <category>재범</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/62</guid>
      <comments>https://crynut84.tistory.com/62#entry62comment</comments>
      <pubDate>Wed, 9 Sep 2009 21:57:48 +0900</pubDate>
    </item>
    <item>
      <title>[H.264] Discrete Cosine Transform(DCT) 이산 코사인 변환</title>
      <link>https://crynut84.tistory.com/61</link>
      <description>&lt;H1&gt;&lt;FONT color=#8e8e8e size=2&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=700&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=700&gt;&lt;A href=&quot;http://crynut84.tistory.com/55&quot;&gt;&lt;FONT color=#000000 size=2&gt;#1. [H.264] 동영상 압축의 기본 개념&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#000000 size=2&gt; &lt;br /&gt;
&lt;/FONT&gt;&lt;A href=&quot;http://crynut84.tistory.com/56&quot;&gt;&lt;FONT color=#000000 size=2&gt;#2. [H.264] 동영상 압축의 기본 개념 – RGB, YCbCr, 서브샘플링&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;A title=&quot;[http://crynut84.tistory.com/58]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/58&quot; target=_self&gt;&lt;FONT color=#000000&gt;#3. [H.264] Block-based Motion Estimation(ME)&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;A title=&quot;[http://crynut84.tistory.com/61]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/61&quot; target=_self&gt;#4. [H.264] Discrete Cosine Transform(DCT) 이산 코사인 변환&lt;/A&gt;&lt;br /&gt;
&lt;A title=&quot;[http://crynut84.tistory.com/66]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/66&quot; target=_blank&gt;&lt;A title=&quot;[http://crynut84.tistory.com/66]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/66&quot; target=_self&gt;#5. [H.264] Quantization(양자화)과 Zig-zag scanning&lt;/A&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;


&lt;P&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;안녕하세요? 맨날맑음 입니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이전 포스팅에서 동영상을 압축하기 위한 프로세싱 과정중 &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;A href=&quot;http://crynut84.tistory.com/58&quot; target=_blank&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;ME(Motion Estimation)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;에 관해 알아 보았습니다. 이번에는 DCT(Discrete Cosine Transform)에 관해 알아보도록 하겠습니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#1. Discrete Cosine Transform 개요&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;Discrete Cosine Transform&lt;/STRONG&gt;(이하 DCT)는 무엇일까요? 번역해 보자면 이산 코사인 변환이라고 합니다. 이전 시간에 배운 ME는 프레임간 유사성을 이용하여 영상을 압축 할 수 있는 기법이었는데요. DCT는 해당하는 프레임(Picture)만을 이용해서 영상을 압축 할 수 있도록 하는 기법이라 할 수 있습니다. 그렇기 때문에 &lt;STRONG&gt;사진을 압축하는 JPEG에서 쓰이는 방식&lt;/STRONG&gt;입니다. 동영상 코덱에서는 H.261, H.263, H.264.. MPEG등 에서 이 방식을 사용하여 영상을 압축하게 됩니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;대체 DCT란 놈이 어떤 것인지 좀더 자세히 알아보도록 하죠. 혹시 신호처리를 알고 계신 분은 좀더 쉬울 수 있겠습니다. 저는 신호처리를 모르는 관계로 처음 배울 때 잘 이해가 가지 않더군요. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/145D020E4A97DF396D&quot;&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/117C63104A97DF3941&quot; height=&quot;239&quot; /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;- Fig1. DCT 변환 - &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;영상을 DCT 변환하면 Fig1에서 처럼&lt;STRONG&gt; 공간 영역(Spatial Domain)에서 주파수 영역(Frequency Domain)으로 변하게 됩니다.&lt;/STRONG&gt; 그림을 잘 살펴보면 주파수가 낮은 쪽으로 데이터(신호)가 몰려 있는 것을 볼 수 있습니다. 이와 같이 DCT를 하면 신호성분이 낮은 주파수에 몰리게 되는 &lt;STRONG&gt;‘에너지 집중 현상’&lt;/STRONG&gt;이 나타납니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#2. DCT를 하는 이유&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/2070D3144B53138B79&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/165A170B4B53138B09&quot; height=&quot;280&quot; /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;- Fig2. DCT Coefiicients - &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;그럼 코덱은 압축을 위해서 왜 DCT를 수행 하는 것일까요? DCT는 공강영역을 주파수 영역으로 변환한다고 하였습니다. 영상을 관찰하다 보면 &lt;STRONG&gt;인접한 픽셀간에는 비슷한 색상인 경우가 많이 있습니다&lt;/STRONG&gt;. 즉 8×8 블럭을 DCT하였을 경우 64개의 픽셀중에 같은 색상이 낮은 주파수(DC)로 몰리게 됩니다. 그리고 색상의 변화가 있는 경우 높은 주파수(AC)으로 위치하게 됩니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;DCT를 수행하게 되면 대부분의 이미지는 Fig1에서 와 같은 결과가 나오게 됩니다. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;빨간색으로 우뚝 솟은 부분(DC)이 제일 큰 신호 값이며, 파란색은 울퉁불퉁 하긴 하지만 높은 주파수 영역으로 갈 수록 평평한 것을 볼 수 있습니다. 즉 위에서 설명 했듯이 &lt;STRONG&gt;8×8 블럭의 색상 평균값이 DC성분이 되며, 나머지 평균값과 틀린 부분이 AC 성분&lt;/STRONG&gt;이 되는 것입니다. 눈으로 보아도 DC에 값이 많이 몰린 것을 알 수 있죠? 이 의미가 바로 인접한 픽셀간은 거의 비슷한 색상으로 이루어 져 있기 때문에 DC의 값이 크다라고 생각하시면 됩니다. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;그런데 &lt;STRONG&gt;사람의 눈 또한 낮은 주파수 성분(DC)에는 민감하게 반응 하지만, 높은 주파수 성분(AC)에는 민감하지 않기 때문에 높은 주파수 영역(그림에서 파란색)을 좀 생략 한다고 해도 화질의 차이&lt;/STRONG&gt;를 잘 느끼지 못하게 됩니다. 이것이 압축이 되는 원리 입니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;그림1 에서 보는 것과 같이 DCT변환 전에는 8×8 블럭 이므로 64개의 데이터가 필요 하지만&amp;nbsp; DCT를 하여 높은 주파수 성분(AC)을 좀 버려서(화질의 차이는 크지 않으므로)&amp;nbsp; DC에서 가까운 10개의 데이터만 가지게 된다면, 그만큼 압축이 되는 것 입니다. 사실 DCT는 이렇게 주파수 성분으로 바꾸는 작업만을 이야기 하며 다음시간에 이야기할 Quantization과 Entropy coding과정을 거쳐야 실질적인 압축이 일어납니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;STRONG&gt;#3. Discrete Cosine Transform(DCT)&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;위의 개념이 이해가 가시나요? 어떻게 영상을 주파수 영역으로 변환하는지에 관해 알아 보겠습니다. &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;DCT도 ME와 마찬가지로 블럭 단위로 수행하게 됩니다. 그 이유는 블럭 사이즈가 커지면 시간이 엄청 걸리기도 하지만, 전체 프레임을 한번에 처리하기 위해서는 어마어마한 메모리도 필요 하게 됩니다. 그래서 일반적으로 JPEG, H.261, H.263, MPEG에서는 8×8 블럭 단위로 DCT를 수행하게 됩니다. (H.264는 기본 4×4에 변형이 가능합니다.)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;그럼 어떻게 공간 영역을 주파수 영역으로 바꿀 수 있을까요? &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;아래는 2D-DCT를 수행하기 위한 수식입니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/120D03284B53138B55&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/125BC50E4B53138C7A&quot; height=&quot;67&quot; /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;- Fig3. 2D-DCT - &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;V는 DCT를 수행하여 주파수 도메인으로 바뀐 , C는 DCT수행에 필요한 메트릭스(Fig4 참조), X는 원본 블럭, CT는 C 메트릭스의 가로 세로를 변환한 메트릭스 입니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1206E7144B53138C2E&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/14681A244B53138C6D&quot; height=&quot;69&quot; /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;- Fig4. N×N Cosine Transfrom Matrix&amp;nbsp;&amp;nbsp; C={c(k,n))} - &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;Fig4는 DCT 수행에 필요한 Matrix를 어떻게 생성하는지를 나타냅니다. k는 행을 n은 열을 나타내고 N은 Matrix의 크기를 나타냅니다. 우리는 8×8 DCT를 수행할 것이므로 N은 8이 됩니다. 이렇게 생성된 Matrix를 이용하여 V=CXCT 라는 수식으로 DCT가 된 데이터를 가져올 수 있습니다. 아래 Fig5는 DCT후의 데이터 변화를 나타냅니다. &lt;STRONG&gt;숫자로 확인하여도 DC성분에 값이 집중된 것을 알 수 있습니다&lt;/STRONG&gt;.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1967DF0E4B53138C30&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/11466B0B4B53138D62&quot; height=&quot;225&quot; /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;- Fig5. DCT후의 데이터 변화 - &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;아래에 있는 Fig6에서도 마찬가지로&lt;STRONG&gt; 높은 값들은 DC쪽에 집중되어 분포&lt;/STRONG&gt;하게 되는 것을 알 수 있습니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/19025F0C4B53138D0D&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/11392B034B53138E5C&quot; height=&quot;166&quot; /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;-Fig6. Matlab으로 확인해본 DCT후의 데이터 분포-&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;STRONG&gt;#4. Inverse DCT는 어떻게?&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;DCT를 하여 주파수 도메인으로 변환 할 수 있다는 것을 알았습니다. 그럼 다시 공간 도메인으로 변경 하려면 어떻게 해야 할까요?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/127599114B53138E26&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1776990C4B53138F3E&quot; height=&quot;76&quot; /&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;- Fig7. 2D-Inverse DCT -&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;위와 같은 공식으로 원래 블럭을 복원 해 낼 수 있습니다. 물론 &lt;STRONG&gt;복원한 블럭은 오리지날과 100% 동일&lt;/STRONG&gt;하게 됩니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;STRONG&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;#5. 끝마치며&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;이번 시간에는 코덱의 인코딩 과정중 하나인 DCT의 개념과 DCT를 왜 해야하는지 알아 보았으며, DCT된 블럭을 원래대로 되돌리는 것 까지 알아 보았습니다. 다음 시간에는 &lt;STRONG&gt;Quantization에 관해 알아보고 전체적인 인코딩 프로세싱&lt;/STRONG&gt;도 살짝 짚어 보려구 합니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;제가 전체 그림을 제시하고 세부 강좌를 만들었어야 하는데, 세부적인 설명부터 하다보니 좀 오해가 생기는 부분이 있는 것 같아서요. 그럼 좋은 주말 저녁 되세요^^&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <category>MultiMedia</category>
      <category>AC</category>
      <category>DC</category>
      <category>DCT</category>
      <category>Discrete Cosine Transform</category>
      <category>H.264</category>
      <category>JPEG</category>
      <category>이산코사인변환</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/61</guid>
      <comments>https://crynut84.tistory.com/61#entry61comment</comments>
      <pubDate>Mon, 24 Aug 2009 16:04:00 +0900</pubDate>
    </item>
    <item>
      <title>오늘부터 금연입니다.</title>
      <link>https://crynut84.tistory.com/60</link>
      <description>&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/197CAE214A90C76317&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F197CAE214A90C76317&quot; width=&quot;300&quot; height=&quot;264&quot; alt=&quot;&quot; filename=&quot;no_smoking.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;안녕하세요? 맨날맑음 입니다.&lt;br /&gt;
&lt;br /&gt;예전부터 하려고 했지만 약해빠진 의지로 인해 못하고 있던 금연을 하려고 합니다. 휴가도 다녀왔고 가장 스트레스가 없는 방학기간이며(일주일 남았지만) 요즘 들어 '급' 안좋아진 몸을 보며 이번엔 꼭 금연을 해야 겠습니다.&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;이런 쓸때없는 글을 올리는 이유는 금연 수칙 첫번째인 '나의 금연 사실을 모두에게 알려라!'를 실천하기 위한 것입니다. 오늘 영결식을 하는 故 김대중 대통령님 또한 하루 3갑을 피는 '골초' 였지만 금연을 하신것 처럼 저도 이번에야 말로 꼭 금연을 하고야 말아야 겠습니다.(금단현상으로 이상한 말을 하는군요'')&lt;br /&gt;
&lt;br /&gt;벌써 9년째 거의 매일 한갑씩 피웠는데.. 잘 할 수 있겠죠? ㅠ&lt;br /&gt;
&lt;br /&gt;의지가 약해질 때&amp;nbsp;마다 보려고 금연을 하는 이유도 좀 써봅니다.&lt;br /&gt;

&lt;DIV style=&quot;BORDER-BOTTOM: #c1c1c1 1px dashed; BORDER-LEFT: #c1c1c1 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #c1c1c1 1px dashed; BORDER-RIGHT: #c1c1c1 1px dashed; PADDING-TOP: 10px&quot; class=txc-textbox&gt;#1. 담배를 피울 때 마다드는 자괴감을 없앨 수 있다.&lt;br /&gt;
#2. 요즘 들어 부쩍 나빠진 몸 상태가 걱정된다.&lt;br /&gt;
#3. 하루 2,500원이면, 10일이면 25,000원 100일이면 250,000원 Olleh!!&lt;br /&gt;
#4. 아침마다 상쾌하게 일어나서 하루를 시작 할 수 있다.&lt;br /&gt;
#5. 어무니께 냄새난다고 구박 받는 일도 이젠 안녕~&lt;br /&gt;
&lt;/DIV&gt;&lt;br /&gt;
이번엔 꼭 성공 할 수 있겠죠!! 아자아자 화이팅! 난 할 수 있다.&lt;br /&gt;
따스한 200원짜리 밀크커피와 담배는 이제 안녕~~(더불어 하루 4-5잔 먹던 커피도 끊을 수 있겠군요..)&lt;br /&gt;
이것은 1석 2조, 꿩먹고 알먹고, 도랑치고 가재잡고!!&lt;br /&gt;
&lt;br /&gt;나는 비흡연자..원래부터 담배 따윈 몰랐던 비흡연자.. (자기 최면중ㅠㅠ)&lt;/SPAN&gt;</description>
      <category>etc</category>
      <category>금연</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/60</guid>
      <comments>https://crynut84.tistory.com/60#entry60comment</comments>
      <pubDate>Sun, 23 Aug 2009 13:48:02 +0900</pubDate>
    </item>
    <item>
      <title>[H.264] Block-based Motion Estimation(ME)</title>
      <link>https://crynut84.tistory.com/58</link>
      <description>&lt;H1&gt;&lt;FONT color=#8e8e8e size=2&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=700&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=700&gt;&lt;A href=&quot;http://crynut84.tistory.com/55&quot;&gt;&lt;FONT color=#000000 size=2&gt;#1. [H.264] 동영상 압축의 기본 개념&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#000000 size=2&gt; &lt;br /&gt;
&lt;/FONT&gt;&lt;A href=&quot;http://crynut84.tistory.com/56&quot;&gt;&lt;FONT color=#000000 size=2&gt;#2. [H.264] 동영상 압축의 기본 개념 – RGB, YCbCr, 서브샘플링&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;A title=&quot;[http://crynut84.tistory.com/58]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/58&quot; target=_self&gt;&lt;FONT color=#000000&gt;#3. [H.264] Block-based Motion Estimation(ME)&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;A title=&quot;[http://crynut84.tistory.com/61]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/61&quot; target=_self&gt;#4. [H.264] Discrete Cosine Transform(DCT) 이산 코사인 변환&lt;/A&gt;&lt;br /&gt;
&lt;A title=&quot;[http://crynut84.tistory.com/66]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/66&quot; target=_blank&gt;&lt;A title=&quot;[http://crynut84.tistory.com/66]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/66&quot; target=_self&gt;#5. [H.264] Quantization(양자화)과 Zig-zag scanning&lt;/A&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;


&lt;P&gt;&lt;FONT size=2&gt;안녕하세요? 맨날맑음 입니다.&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;가장 덥다는 말복이 바로 어제 였습니다. 다들 ‘삼계탕’은 맛있게 드셨는지 모르겠네요; 저는 이마트의 닭이 매진되어 삼계탕은 못 먹고 말았네요 ㅠ_ㅠ 그 큰 마트에서 매진이라니..말복 때 죽음을 맞이한 수많은 닭들에게 감사할 때 입니다;&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;이번 포스팅에서는 동영상 압축의 핵심이라 할 수 있는 &lt;STRONG&gt;Block-based Motion Estimation&lt;/STRONG&gt;(이하 ME)에 관해 알아 보려고 합니다. &lt;br /&gt;
&lt;br /&gt;본 내용으로 들어가기 전에 ME에 관해 간단히 소개하자면, 지난 시간에 프레임과 그 인접한 프레임은 거의 비슷한 형태로 이루어 져 있다고 하였습니다. 만약 프레임1과 프레임2가 있을 때 프레임2는 1과 거의 비슷하기 때문에 굳이 모든 데이터를 가지고 있을 필요 없이, 1의 어느 부분과 비슷하다..라고 표시만 해주는 방법으로 데이터의 양을 줄이게 됩니다. 이렇게 하기 위해서 ME를 하여, &lt;STRONG&gt;프레임1(Reference Frame) 에서 어느 부분과 가장 일치하는지 찾아주는 과정&lt;/STRONG&gt;이라고 할 수 있습니다. 아래에서 자세히 알아보도록 하죠. &lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;#1. Block-based?&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;위에서 Block-based Motion Estimation라고 했습니다. 굳이 번역하자면 블럭 기반의 움직임 추정(?)이라고 하면 될 것 같습니다. 그럼 블럭 기반이라는 말부터 살펴 보면 &lt;STRONG&gt;ME를 할때 프레임 전체를 한번에 하는 것이 아니라 하나의 프레임을 잘게 잘라(8×8, 16×16 or 32×32) 사용&lt;/STRONG&gt;하게 됩니다. &lt;STRONG&gt;기본적으로는 16×16의 매크로 블럭(Macro-Block)&lt;/STRONG&gt;을 사용하게 됩니다. &lt;/FONT&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/183D8C0F4A84EA2BCA&quot;&gt;&lt;FONT size=2&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/183D8C0F4A84EA2BCA&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/137ADB0E4A84EA2C7F&quot; height=&quot;217&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;br /&gt;
-그림1. 16×16 Macro Block으로 나눈 모습- &lt;br /&gt;
&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;&lt;br /&gt;
&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot;&gt;&lt;FONT size=2&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;#2.&lt;/STRONG&gt; &lt;STRONG&gt;Motion Estimation&lt;/STRONG&gt;&lt;/FONT&gt; &lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/12677D0D4A84EA2C10&quot;&gt;&lt;FONT size=2&gt;&lt;br /&gt;
&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1649B80E4A84EA2C05&quot; height=&quot;238&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;br /&gt;
-그림2. Motion Estimation 개념도-&lt;br /&gt;
&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot;&gt;&lt;FONT size=2&gt;그림 2가 이해 가시나요?&amp;nbsp; Frame(t)(현재 프레임)에서 3번째 매크로 블럭을 처리하고 있다고 가정 합니다. Frame(t-1)(이전 프레임)에서 매크로 블럭과 가장 비슷한 곳을 찾는 모습이죠. 저 빨간색 사각형은 Frame(t-1)에서 비슷한 곳을 찾을 &lt;STRONG&gt;Search Range(검색 범위)&lt;/STRONG&gt; 입니다. 눈으로 보아도 분홍색 화살표가 가르키고 있는곳이 현재 매크로 블럭과 많이 일치하는 것을 알 수 있습니다. &lt;STRONG&gt;Search Range는 임의로 정할 수 있지만 일반적으로 Block Size의 ±7을 사용&lt;/STRONG&gt;하게 됩니다.&lt;br /&gt;
&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;br /&gt;
그럼 그림처럼 현재 매크로 블럭이 이전 프레임과 가장 일치하는 최고의 매칭 포인트를 어떻게 찾게 되는지 매우 궁금 해 집니다. 비밀은 바로 SAD 방정식에 있습니다. &lt;STRONG&gt;SAD 방정식을 사용하여 최고의 매칭 포인트를 찾아&lt;/STRONG&gt; 내는 것이지요.&lt;/FONT&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/16043C0F4A84EA2D06&quot;&gt;&lt;FONT size=2&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;
&lt;DIV style=&quot;TEXT-ALIGN: center&quot;&gt;
&lt;CENTER&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/16043C0F4A84EA2D06&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1662DD254A84EA2D54&quot; height=&quot;49&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/CENTER&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;DIV&gt;&lt;FONT style=&quot;TEXT-ALIGN: center&quot; size=2&gt;
&lt;CENTER&gt;-그림3 SAD equation- &lt;/CENTER&gt;&lt;/FONT&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left&quot;&gt;&lt;FONT size=2&gt;수식을 보니 갑자기 머리가 아파옵니다. 저 같이 수식 알러지가 있으신 분들을 위해 친절하게 그림으로 설명해 드리죠.&lt;/FONT&gt;&lt;FONT size=2&gt;갑자기 제가 친절한 금자씨(?)라도 된 것 같습니다;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1401840E4A84EA2D9C&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1665140B4A84EA2E0C&quot; height=&quot;233&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;br /&gt;
&amp;nbsp;-그림4. Motion Estimation 과정(1)-&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;그림 4를 보면서 설명 하겠습니다. 이 그림은 이전 프레임(frame t-1)을 나타냅니다. 사각형 하나는 하나의 픽셀입니다. 빨간색 사각형으로 Search Range(검색 영역)가 있습니다. Cerrent block이 바로 현재 프레임의 매크로 블럭입니다. (원래 16x16으로 해야 하지만 그림 그리는 것도 만만치 않습니다)&lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/133A760F4A84EA2EAB&quot;&gt;&lt;FONT size=2&gt;&lt;br /&gt;
&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/171A3F284A84EA2E74&quot; height=&quot;384&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;br /&gt;
&amp;nbsp;-그림5. Motion Estimation 과정(2)-&lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;&lt;br /&gt;
그림 5에서 보는 것 처럼 &lt;STRONG&gt;Search Range를 매크로 블럭으로 탐색 하면서 Frame(t-1) - Cerrent block 를 계산하여 그 ‘절대값’을 Origin에 저장&lt;/STRONG&gt;하게 됩니다. &lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1918DD0E4A84EA2E7C&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2077C10D4A84EA2F11&quot; height=&quot;287&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;br /&gt;
&amp;nbsp;-그림6. Motion Estimation 과정(3)-&lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;&lt;br /&gt;
이렇게 계산된 값들 중 그림 6에서 처럼 가장 작은 값을 찾는 것이죠. 숫자 22가 들어있는 좌표(6.5)가 최소값을 갖는 바로 Current Block과 가장 일치하는 이전 프레임의 좌표인 것입니다. 이 지점을 &lt;STRONG&gt;Motion Vector&lt;/STRONG&gt;라고 합니다. 즉 &lt;STRONG&gt;이전 프레임에서 현재 블럭과 가장 일치하는 지점&lt;/STRONG&gt;을 말합니다.&lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1677CA0D4A84EA2F02&quot;&gt;&lt;FONT size=2&gt;&lt;br /&gt;
&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/110A160F4A84EA3002&quot; height=&quot;229&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;br /&gt;
-그림7. Motion Vector-&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;이렇게 &lt;STRONG&gt;Search Range의 모든 좌표를 전부 검색하는 방법을 Full Search&lt;/STRONG&gt;라고 합니다. 이러한 ME의 과정은 코덱이 영상을 압축하는 과정에서 &lt;STRONG&gt;많은 비트 수를 감소&lt;/STRONG&gt; 시켜 주게 됩니다.&amp;nbsp; 그림7의 단순한 프레임과의 차이와 ME를 사용한 차이를 보시면 확연하게 그 차이를 알 수 있습니다.(흰색이 데이터가 있는 부분입니다) ME를 했을 경우는 잔여 데이터가 거의 없는 것을 볼 수 있습니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1847F60F4A84EA307A&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1563F30B4A84EA3127&quot; height=&quot;311&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;br /&gt;
-그림8. 단순한 프레임간의 차와 ME를 수행 했을 때의 차이-&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;그런데 ME는 전체 인코딩 과정중에 가장 많은 부하(?)를 일으킵니다. &lt;STRONG&gt;ME를 통해 데이터의 양은 많이 감소하게 되지만 Search를 하는 계산 과정이 있기 때문에 속도는 많이 떨어지게 되는 것이죠.&lt;/STRONG&gt; 실제 H.264에서는 Full Search외에 여러 가지 Search 방법(예. 다이아몬드 서치)을 통해 속도 향상을 할 수 있도록 하고 있습니다.(이런 방법들은 차차 소개하도록 하겠습니다)&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #f3c534 1px dashed; BORDER-LEFT: #f3c534 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fefeb8; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #f3c534 1px dashed; BORDER-RIGHT: #f3c534 1px dashed; PADDING-TOP: 10px&quot; class=txc-textbox&gt;&lt;FONT size=2&gt;글이 많이 길어지는군요.. ME를 간단하게 요약 해 보자면.&lt;/FONT&gt; 
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size=2&gt;현재 프레임(t)의 처리 할 매크로 블락을 만든다.&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT size=2&gt;이전 프레임(t-1)에 Search Range를 설정한다.&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT size=2&gt;Search Range를 SAD 방정식으로 Search 하여 그 결과 값을 저장한다.&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT size=2&gt;결과값 중에 가장 작은 값(Motion Vector)을 찾는다.&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT size=2&gt;Moton Vector의 매크로 블럭과 현재 매크로 블럭의 차이의 절대값을 결과(Residual) 데이터에 저장한다.&lt;/FONT&gt;&amp;nbsp;&lt;/LI&gt;&lt;/UL&gt;&lt;/DIV&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;&lt;br /&gt;
#3. 디코더(Decoder)의 데이터 복구&lt;br /&gt;
&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;지금까지 인코더(Encoder) 측에서 ME를 통해 데이터를 줄이는 방법을 상세하게 설명 했습니다. 그렇다면 디코더에서는 어떻게 Residual 데이터를 가지고 원본 데이터를 복원해 나갈까요?&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/186017104A84EA3190&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/127810264A84EA324C&quot; height=&quot;384&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;br /&gt;
-그림9. 디코더는 어떻게 원본 이미지를 복원 할 수 있을까?- &lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;br /&gt;
정답은 ME의 과정을 반대로 수행 하면 될 것입니다. 디코더 또한 현재 프레임을 되 살릴 때 &lt;STRONG&gt;매크로 블럭 단위로 복원&lt;/STRONG&gt;하게 됩니다. 그렇다면 디코더가 매크로 블럭을 복원하기 위해 가지고 있는 데이터는 무엇이 있을까요? 디코더는 바로 이전에 처리한 &lt;STRONG&gt;이전 프레임의 원본 이미지(사실 조금의 손실이 있는..)와 현재 프레임의 Residual 데이터를 가지고&lt;/STRONG&gt; 있을 것 입니다. 이 두 가지를 가지고 현재 복원 할 매크로 블럭의 &lt;STRONG&gt;Residual 데이터와 이 Residual 데이터가 이전 프레임의 어디에 위치하였는지(Motion Vector)정보를 이용하여 둘을 합하여 현재 블럭을 복원&lt;/STRONG&gt; 하는 것입니다. 그림 10과 같이 이러한 방법을 반복하여, 프레임 전체를 복원 하게 됩니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1760270C4A84EA330A&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1224A50B4A84EA3391&quot; height=&quot;345&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;br /&gt;
-그림10. 디코더의 이미지 복원 과정-&lt;br /&gt;
&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;#4 . 실습&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;ME의 과정이 이해 가시나요? &lt;STRONG&gt;설명 만으로는 100% 자신의 것으로 만들기 어렵습니다. C나 C++을 이용하여 프로그램을 만들어 보면 확실하게 이해가 될 것 입니다&lt;/STRONG&gt;.&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;준비물.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size=2&gt;각자 익숙한 개발 툴(저는 Visual Studio 2008)&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT size=2&gt;실습에 필요한 YUV 파일 Download(&lt;/FONT&gt;&lt;A title=http://trace.eas.asu.edu/yuv/ href=&quot;http://trace.eas.asu.edu/yuv/&quot;&gt;&lt;FONT color=#3058d2 size=2&gt;http://trace.eas.asu.edu/yuv/&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;) &lt;/FONT&gt;&lt;br /&gt;
&lt;FONT size=2&gt;- 저는 football_sif.yuv 사용&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT size=2&gt;결과를 확인하기 위한 YUV 플레이어 &lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/185DF3224A84EC1F36&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/exe.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;RDisp.exe&lt;/a&gt;&lt;/div&gt;
- 이 플레이어를 열고 마우스 오른쪽 버튼을 누른 후 셋팅에서 화면의 해상도와 Color 타입을 조정하여 사용하면 됩니다.&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;준비가 되었으면, ME를 작성 해 보시면 됩니다. &lt;/FONT&gt;&lt;FONT size=2&gt;그런데 가장자리를 Search 하기 위해서는 Search Range가 –인덱스가 나오는 경우가 발생 하므로, 저는 학습의 편의상 동영상의 가장자리 16은 ME의 대상에서 제외 하도록 하였습니다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P&gt;&lt;FONT size=2&gt;아래에 제가 만들어본 프로그램을 올려 놓지만, &lt;STRONG&gt;꼭 자신이 만들어 보아야 자신의 것이 됩니다.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;프로그램을 컴파일 한 후, Debug 폴더안의 실행파일을 실행 시켜 ME를 수행 할 수 있으며, 결과는 Root 폴더의 Me_sample에서 residual.foo 파일을 열어 보면 확인 가능 합니다 &lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: center&quot;&gt;&lt;FONT size=2&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/187175204A84EBFA4F&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;Motion Estimation .zip&lt;/a&gt;&lt;/div&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;#. 마치면서&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;이번 포스트에서는 동영상 압축의 핵심인 ME에 대한 자세한 소개와 디코더 쪽에서 데이터를 복원하는 방법을 알아 보았습니다. 다음번에는 DCT를 이용하여 데이터의 비트 수를 줄이는 방법에 대해 자세히 알아 보겠습니다.&lt;/FONT&gt;&lt;/P&gt;</description>
      <category>MultiMedia</category>
      <category>BLOCK</category>
      <category>H.264</category>
      <category>me</category>
      <category>Motion Estimation</category>
      <category>SAD 방정식</category>
      <category>블럭 기반 인코딩</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/58</guid>
      <comments>https://crynut84.tistory.com/58#entry58comment</comments>
      <pubDate>Fri, 14 Aug 2009 13:38:13 +0900</pubDate>
    </item>
    <item>
      <title>장애인 웹 접근성 평가를 위한 Focus Explorer</title>
      <link>https://crynut84.tistory.com/57</link>
      <description>&lt;P&gt;&lt;FONT size=2&gt;안녕하세요? 맨날맑음 입니다.&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;이 프로젝트는 우리학교 교수님은 아니고, 모 대학교의 교수님의 의뢰로 제가 처음으로 돈을 받고 만든 프로젝트 입니다.&amp;nbsp; 페이를 받았으므로, 자세한 기술은 소개하지 못하고, 프로그램을 간략히 소개하려고 합니다.&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;#1. 장애인 웹 접근성이란?&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;웹 접근성은&lt;STRONG&gt; 장애인(노인)이 웹사이트에서 제공하는 정보를 일반인과 동등하게 제공 받고 이해할 수 있도록 보장&lt;/STRONG&gt;해 주는 것입니다.&amp;nbsp; 이처럼 장애인이 웹을 ‘잘’ 사용하게 하는 데에는 여러 방법이 있을 수 있습니다. 예를 들어 손이 불편하여 마우스는 조작이 힘들고, 키보드만 사용 할 수 있는 사람이 있을 수 있겠고, 색깔을 잘 구분 하지 못 할 수도 있습니다. 또한 시각 장애인의 경우 소리로 현재 포커스 된 곳의 글자를 읽어 줘야 하는 경우도 있을 수 있습니다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;웹 접근성에 대한 더 자세한 정보는 &lt;U&gt;&lt;A href=&quot;http://www.wah.or.kr/index.asp&quot; target=_blank&gt;&lt;FONT color=#0000ff&gt;웹 접근성 연구소&lt;/FONT&gt;&lt;/A&gt;&lt;/U&gt;에서 보실 수 있습니다.&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;#2. 프로젝트 소개&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;Focus Explorer은 이러한 웹 접근성 중 &lt;STRONG&gt;키보드만으로 웹을 조작하기 편리 하게 되어있는지를 평가 하기 쉽도록 도움을 주는 도구&lt;/STRONG&gt; 입니다. 키보드는 사용하여 웹을 사용 하려면 [Tab]키를 사용 하여, 컨트롤을 이동 하여야 합니다. 프로그램에도 탭 인덱스(Tab Index)가 있듯이, 웹 사이트를 제공하는 쪽에서는 사용자가 예상할 수 있는 경로로 포커스가 이동해야 합니다. 예를 들면, 탭의 이동은 좌에서 우로, 위에서 아래쪽으로 이동해야 하는 것이죠. &lt;br /&gt;
&lt;br /&gt;이러한 탭 키에 의한 &lt;STRONG&gt;포커스의 이동을 평가하는 측에서 쉽게 인지 할 수 있도록 각 컨트롤 별로 사각형 표시와, 이동 경로를 화살표로 표시&lt;/STRONG&gt; 해 주게 됩니다. &lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;CENTER&gt;
&lt;P&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/12777D0C4A842CCCD1&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/204924254A842CCC58&quot; height=&quot;139&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;&lt;/CENTER&gt;
&lt;P align=center&gt;&lt;FONT size=2&gt;-그림1. 프로그램 구성도-&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;이 프로그램은 그림1 처럼&amp;nbsp; .Net Framework 2.0 기반의 메인 응용과, Win32 Api Hooking, OleAcc Event Hooking을 사용하여 구현된 DLL들로 구성 되어 있습니다. &lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;br /&gt;
&lt;STRONG&gt;&lt;FONT size=3&gt;#3. 프로그램 기능&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT size=2&gt;설치와 제거 &lt;br /&gt;
- 프로그램을 손쉽게 설치하고 제거 할 수 있도록 Install과 Uninstall을 지원합니다. &lt;br /&gt;
&lt;/FONT&gt;
&lt;CENTER&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1708350C4A842CCD82&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1246F2254A842CCC91&quot; height=&quot;302&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/CENTER&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;
&lt;P align=center&gt;&lt;FONT size=2&gt;-그림2. Focus Explorer 설치 화면-&lt;/FONT&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;br /&gt;

&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;탭 키에 의한 포커스 이동을 사각형과 화살표로 표시 합니다. &lt;br /&gt;
&lt;/STRONG&gt;- 포커스의 이동이 정방향일 경우 파란색(디폴트) 역방향일 경우 붉은색으로 표시합니다. &lt;br /&gt;
&lt;/FONT&gt;&lt;/DIV&gt;
&lt;CENTER&gt;
&lt;DIV align=left&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1622810D4A842CCDA4&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/14772B0B4A842CCE72&quot; height=&quot;75&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;&lt;/CENTER&gt;
&lt;P align=center&gt;&lt;FONT size=2&gt;-그림3. 포커스 이동경로 표시 화면-&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;화살표의 색상 두께 및 여러 속성을 변경 할 수 있는 환경설정을 제공합니다. &lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;CENTER&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/201EE70B4A842CCE63&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1122810D4A8433FDAE&quot; width=&quot;367&quot; height=&quot;280&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/CENTER&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=2&gt;-그림4. 환경설정- &lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;
&lt;/LI&gt;
&lt;LI&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;이동 결과를 나중에 활용 할 수 있도록 그림파일과, 로그 화일(txt)로 제공합니다.&lt;/STRONG&gt; &lt;br /&gt;
&lt;/FONT&gt;&lt;/P&gt;
&lt;CENTER&gt;
&lt;DIV align=center&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/14548B264A8433FE8F&quot; width=&quot;368&quot; height=&quot;264&quot; /&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/CENTER&gt;
&lt;DIV align=center&gt;&lt;FONT size=2&gt;-그림5. 로그 확인 창- &lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;br /&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=3&gt;#. 마치면서&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;앞으로 웹 뿐 아니라 어플리케이션 에서도 장애인의 접근성이 중요하게 평가&lt;/STRONG&gt; 될 것 같습니다. 저는 웹 개발은 할 줄 모르지만 웹표준이라던지, 이러한 접근성의 고려도 해보아야 할 것 같네요.&lt;/FONT&gt;&lt;/P&gt;</description>
      <category>Project</category>
      <category>Focus Explorer</category>
      <category>웹 접근성</category>
      <category>장애인 접근성</category>
      <category>접근성</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/57</guid>
      <comments>https://crynut84.tistory.com/57#entry57comment</comments>
      <pubDate>Fri, 14 Aug 2009 00:10:08 +0900</pubDate>
    </item>
    <item>
      <title>[H.264] 동영상 압축의 기본 개념 - RGB, YCbCr, 서브샘플링</title>
      <link>https://crynut84.tistory.com/56</link>
      <description>&lt;H1&gt;&lt;FONT color=#8e8e8e size=2&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=700&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=700&gt;&lt;A href=&quot;http://crynut84.tistory.com/55&quot;&gt;&lt;FONT color=#000000 size=2&gt;#1. [H.264] 동영상 압축의 기본 개념&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#000000 size=2&gt; &lt;br /&gt;
&lt;/FONT&gt;&lt;A href=&quot;http://crynut84.tistory.com/56&quot;&gt;&lt;FONT color=#000000 size=2&gt;#2. [H.264] 동영상 압축의 기본 개념 – RGB, YCbCr, 서브샘플링&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;A title=&quot;[http://crynut84.tistory.com/58]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/58&quot; target=_self&gt;&lt;FONT color=#000000&gt;#3. [H.264] Block-based Motion Estimation(ME)&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;A title=&quot;[http://crynut84.tistory.com/61]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/61&quot; target=_self&gt;#4. [H.264] Discrete Cosine Transform(DCT) 이산 코사인 변환&lt;/A&gt;&lt;br /&gt;
&lt;A title=&quot;[http://crynut84.tistory.com/66]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/66&quot; target=_blank&gt;&lt;A title=&quot;[http://crynut84.tistory.com/66]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/66&quot; target=_self&gt;#5. [H.264] Quantization(양자화)과 Zig-zag scanning&lt;/A&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;


&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;안녕하세요? 맨날맑음 입니다. &lt;br /&gt;
&lt;br /&gt;이전 포스팅에서는 동영상의 정의와, 동영상을 압축하는 기본적인 방법에 대해 간단히 살펴 보았습니다. &lt;br /&gt;
이번 시간에는 동영상을 압축하는 자세한 방법을 알아보기 전에 색공간 &lt;STRONG&gt;RGB, &lt;/STRONG&gt;&lt;STRONG&gt;YUV(YCbCr) 그리고 YUV 서브샘플링&lt;/STRONG&gt;에 대해 알아 보도록 하겠습니다. &lt;br /&gt;
&lt;br /&gt;본론으로 들어가기 전에 간단하게 &lt;STRONG&gt;&lt;A href=&quot;http://ko.wikipedia.org/wiki/%EC%83%89_%EA%B3%B5%EA%B0%84&quot; target=_blank&gt;&lt;FONT color=#193da9&gt;색공간(Color Space)&lt;/FONT&gt;&lt;/A&gt;&lt;/STRONG&gt;에 관해 알아 보도록 하겠습니다. &lt;br /&gt;
위키의 설명에 보면 색공간은 색표시계를 3차원으로 표현한 공간 개념이라고 나와있습니다. 즉 색을 표현하는 방법은 여러가지(RGB, CMYK, HSV, CIE, YCbCr 등)가 있는데 각각이&lt;STRONG&gt; 색을 표현하는(담는) 방법&lt;/STRONG&gt;이라고 생각해도 될 것 같습니다. &lt;br /&gt;
&lt;/FONT&gt;&lt;STRONG&gt;&lt;br /&gt;
&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=3&gt;#1. RGB 색공간&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/201B2D0C4A81927D67&quot;&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/181A600E4A81927E14&quot; width=&quot;693&quot; height=&quot;123&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt; -그림1. RGB 채널의 원리 -&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;FONT color=#000000&gt;&lt;STRONG&gt;빛의 삼원색(빨강, 녹색, 파랑)을 이용하여 색을 표현하는 방법&lt;/STRONG&gt; 입니다. &lt;STRONG&gt;원색 신호&lt;/STRONG&gt;라고도 불립니다. 일반적으로 TV나 모니터, HTML의 색상표현에 쓰이며,&amp;nbsp; 컴퓨터의 모니터는 RGB방식을 사용하므로, 우리가 영상을 화면에 디스플레이 하기 위해서는 RGB로 변화 하여야만 합니다. 각 값들은 0~255까지의 값(8bit)을 가지고 있으며, 각 값들을 &lt;STRONG&gt;가산 혼합&lt;/STRONG&gt;하여 색상을 표현합니다. &lt;br /&gt;
&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;br /&gt;
&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=3&gt;#2. YCbCr 색공간&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1921FE0F4A81927E12&quot;&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/16038B144A81BEB024&quot; height=&quot;123&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;-그림2.&amp;nbsp; YCbCr 이미지의 구성요소- &lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;STRONG&gt;YCbCr에서 Y는 휘도(빛의 양)이고, Cb와 Cr은 색차&lt;/STRONG&gt;(크로마)를 나타냅니다. &lt;STRONG&gt;색차 신호&lt;/STRONG&gt;라고도 불립니다.이 방식은 RGB보다 색상의 분리 및 전달 효과는 약하지만, &lt;STRONG&gt;적은 데이터로 보다 많은 색상을 나타낼 수 있는 장점&lt;/STRONG&gt;을 가집니다. &lt;br /&gt;
&lt;br /&gt;YUV를 사용하는 대표적인 기계는 텔레비전입니다. 지금은 전부 칼라 텔레비전이지만, 예전 흑백의 경우 휘도(밝기)만을 가지고, 방송을 하다가, 컬러TV는 CbCr성분을 더해서 방송을 하기 때문에 지금에 와서도, 흑백 TV를 볼 수 있는 이유입니다. Y 성분만 뽑아 쓰면 되니까요. &lt;br /&gt;
&lt;br /&gt;이 방식에서 흑백을 표현하기 위해서는 Y 성분만 있으면 됩니다. &lt;STRONG&gt;사람이 물체를 인식하는데 휘도(밝기)에 민감하지 그 외 Color 성분은 별로 민감하지 않습니다&lt;/STRONG&gt;. 이것은 눈의 특성을 보면 알 수 있는데요, 사람의 눈에서 휘도를 구분하는 ‘간상세포’는 눈 전체영역에 분포하게 되고, 색을 구분하는 ‘원추세포’는 눈의 중심부에만 분포하여, 사람의 눈은 색상보다는 밝기에 민감하게 됩니다. &lt;br /&gt;
&lt;br /&gt;이렇게 때문에 사람이 민감하지 않은 모든 색상정보를 전부 포함해야 하는 &lt;STRONG&gt;RGB방식에 비해서, 적응양의 데이터(약 2/1)로도 비슷한 화질&lt;/STRONG&gt;을 낼 수 있게 됩니다.&amp;nbsp;(아래 설명 할 서브샘플링을 하였을때..)&lt;br /&gt;
&lt;br /&gt;영상장치가 영상을 만들 때, 빛을 인식하여(RGB)를 YUV로 바꿔 주게 되며, YUV를 압축하기 위해 서브샘플링을 하여 데이터를 줄이고, 저장장치에 저장하게 됩니다. 계속 알아야 할 개념이 늘어나고 있습니다. 다음은 서브샘플링에 관해 알아보겠습니다. &lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;FONT size=3&gt;&lt;STRONG&gt;#3. YbCbCr 서브샘플링&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;동영상(Image)의 크기를 줄이기 위해 YbCbCr을 그대로 사용하기 보다는 압축하는 것이 효율 적입니다. 앞서 설명처럼 인간은 색차 보다는 밝기에 더 민감하기 때문에 샘플링에서도 이러한 기법을 사용함으로써 데이터를 압축 할 수 있습니다. 쉽게 말해 Y성분을 CbCr보다 많이 할당 함으로써 데이터를 줄이는데 감소한 데이터에 비해서 시각적인 차이는 거의 없게 됩니다. &lt;br /&gt;
&lt;br /&gt;이&lt;/FONT&gt;&lt;FONT size=2&gt;러한 샘플링 기법은 Y Cb Cr의 각각의 비율에 따라 조금씩 다르게 나누어 집니다. 인코딩에서 사용하는 샘플링 비율은 아래의 3개의 비율을 사용합니다. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;YCbCr 4:4:4 format &lt;br /&gt;
&lt;/FONT&gt;&lt;/DIV&gt;
&lt;CENTER&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/127C7C244A81BEB107&quot;&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/185945104A81BEB134&quot; height=&quot;207&quot; /&gt; &lt;/FONT&gt;&lt;/CENTER&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 그림3. YCbCr 4:4:4 format - &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 각 픽셀당 Y Cb Cr이 각각 4개가 들어가게 됩니다. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;YCbCr 4:2:2 format &lt;br /&gt;
&lt;/FONT&gt;
&lt;CENTER&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/127D0D0D4A81BEB20A&quot;&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/205A470E4A81BEB217&quot; height=&quot;209&quot; /&gt;&lt;/FONT&gt;&lt;/CENTER&gt;&lt;/A&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 그림4. YCbCr 4:2:2 format - &lt;br /&gt;
각 픽셀당 2개의 블럭을 기준으로 Y 4개 CbCr 2개를 공유하여 사용합니다. &lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;
&lt;LI&gt;
&lt;DIV align=left&gt;&lt;FONT size=2&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;FONT color=#000000&gt;&lt;STRONG&gt;YCbCr 4:2:0 format (YCbCr 4:1:1)&lt;/STRONG&gt; &lt;br /&gt;
&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;
&lt;CENTER&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1667B90F4A81BEB206&quot;&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/17042C144A81BEB11C&quot; height=&quot;240&quot; /&gt;&lt;/FONT&gt;&lt;/CENTER&gt;&lt;/A&gt;&lt;FONT size=2&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - 그림5. YCbCr 4:2:0 format - &lt;br /&gt;
이 방식이 &lt;STRONG&gt;동영상 인코딩시 표준&lt;/STRONG&gt;으로 쓰입니다. 그림5를 보면 YCbCr 4:1:1로 표현하는 것이 맞지만 표준화 기구에서 정한 이름이 4:2:0이라고 합니다. 저도 처음에 이름 때문에 좀 개념이 해깔렸습니다. 각 픽셀당 Y 4개 CbCr 1개를 공유하여 사용합니다. &lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;
&lt;BLOCKQUOTE&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;FONT color=#000000&gt;&lt;STRONG&gt;내용 추가 &lt;/STRONG&gt;'09.09.02&lt;br /&gt;
YCbCr (4:2:0) 와 YCbCr (4:1:1) 의 차이는 같이 사용하는 자료들도 있고 다르게 구분하는 자료들도&amp;nbsp;있는 것 같군요.&amp;nbsp;그래서 제 생각에는 YCbCr (4:2:0) 와 YCbCr (4:1:1)이 유사하다고 생각하면 댈 것 같습니다.&amp;nbsp; 실제로 많은곳에서 &amp;nbsp;같은 서브샘플링 개념으로 사용되고 있는 것도 사실이니까요.&lt;br /&gt;
&lt;/FONT&gt;&lt;/FONT&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;

&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=3&gt;&lt;STRONG&gt;#4. YCbCr 4:2:0 video format일 경우 데이터 구조는 어떠할까요?&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;데이터의 Type은 Byte이고 값은 0~255의 값이 들어갑니다. 그리고 중요한 것은 &lt;STRONG&gt;YCbCr의 경우 파일의 정보를 표시하는 ‘헤더’는 존재 하지 않습니다. &lt;/STRONG&gt;그래서 다음과 값은 데이터 구조를 가지게 됩니다. &lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/195960104A81BEB21C&quot;&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/195A4C0E4A81BEB313&quot; height=&quot;95&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;-그림6. YCbCr 4:2:0의 데이터 구조- &lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;빨간 점선은 프레임의 구분을 의미 합니다. &lt;STRONG&gt;즉 한 프레임에 해당하는 Y정보가 먼저 나오고, 뒤를 이어 Cb Cr의 정보가 파일에 쓰여 있습니다&lt;/STRONG&gt;. 예를 들어&amp;nbsp; 해상도가 10X10이고, 10개 Frame으로 구성된 동영상의 경우 Y 100개, cb 25개, Cr25개의 정보가 쭉 이어 나오고 또 Y 100개, cb 25개, Cr25개의 정보가 쭉 이어 나오는 식으로 총 10개(10 프레임이므로)가 나열 됩니다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot;&gt;&lt;FONT color=#000000&gt;생각보다 간단한 구조입니다. 이렇게 생각해 보면 파일에서 100Byte를 읽어오고 50Byte 건너뛰고 또 100Byte를 읽고 50Byte를 건너뛰는 방법으로 파일을 읽어 새롭게 저장하면, &lt;STRONG&gt;원래 영상에서 흑백영상을 뽑아 올 수도 있습니다.&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;이번엔 RGB, YCbCr의 색공간에 대해 살펴 보았고, 서브샘플링에 관해서도 살펴 보았습니다. 다음 번에 어떠한 내용부터 올려야 할지 아직 잘 모르겠네요. 일단은 Motion Estimation 기법에 관해 올리려고 생각 중에 있습니다.&lt;/FONT&gt;&lt;/P&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;

&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;-------------------------------------------------------------------------------------------------------------------------------------------&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;# 마치면서..(좀더 알아볼 점)&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;YCbCr에서 Y는 어떤(? 정확히 모르겠어요) 용어와 해깔리지 않기 위해 Y’라고 표현해야 맞다고 합니다. 즉 Y’CbCr입니다. 대강 설명하자면 아날로그 인코딩과 디지털 인코딩 방식의 차이라고 알고 있습니다. &lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;YUV와 YCbCr이 같은 거처럼 글을 썻지만, 사실 비슷하지만 조금 다른 개념인 것 같습니다. 저는 인코딩에 필요한 개념으로 용어에 따른 차이가 있을 수 있겠습니다.&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;참고 사이트 : &lt;/FONT&gt;&lt;A title=http://www.fourcc.org/ href=&quot;http://www.fourcc.org/&quot;&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;http://www.fourcc.org/&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#000000 size=2&gt;&lt;/FONT&gt;&lt;/P&gt;</description>
      <category>MultiMedia</category>
      <category>H.264</category>
      <category>RGB</category>
      <category>YCbCr</category>
      <category>YUV</category>
      <category>동영상</category>
      <category>색공간</category>
      <category>서브샘플링</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/56</guid>
      <comments>https://crynut84.tistory.com/56#entry56comment</comments>
      <pubDate>Wed, 12 Aug 2009 00:47:11 +0900</pubDate>
    </item>
    <item>
      <title>[H.264] 동영상 압축의 기본 개념</title>
      <link>https://crynut84.tistory.com/55</link>
      <description>&lt;H1&gt;&lt;FONT color=#8e8e8e size=2&gt;&lt;/FONT&gt;&lt;/H1&gt;
&lt;TABLE border=0 cellSpacing=0 cellPadding=2 width=700&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD vAlign=top width=700&gt;&lt;A href=&quot;http://crynut84.tistory.com/55&quot;&gt;&lt;FONT color=#000000 size=2&gt;#1. [H.264] 동영상 압축의 기본 개념&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#000000 size=2&gt; &lt;br /&gt;
&lt;/FONT&gt;&lt;A href=&quot;http://crynut84.tistory.com/56&quot;&gt;&lt;FONT color=#000000 size=2&gt;#2. [H.264] 동영상 압축의 기본 개념 – RGB, YCbCr, 서브샘플링&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;A title=&quot;[http://crynut84.tistory.com/58]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/58&quot; target=_self&gt;&lt;FONT color=#000000&gt;#3. [H.264] Block-based Motion Estimation(ME)&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;A title=&quot;[http://crynut84.tistory.com/61]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/61&quot; target=_self&gt;#4. [H.264] Discrete Cosine Transform(DCT) 이산 코사인 변환&lt;/A&gt;&lt;br /&gt;
&lt;A title=&quot;[http://crynut84.tistory.com/66]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/66&quot; target=_blank&gt;&lt;A title=&quot;[http://crynut84.tistory.com/66]로 이동합니다.&quot; href=&quot;http://crynut84.tistory.com/66&quot; target=_self&gt;#5. [H.264] Quantization(양자화)과 Zig-zag scanning&lt;/A&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;br /&gt;
안녕하세요? 맨날맑음 입니다.&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;#0. 들어가며..&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt; 
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;방학을 이용하여,&lt;STRONG&gt; H.264 코덱을 공부하는 것을 목표&lt;/STRONG&gt;로 해서 동영상의 &lt;STRONG&gt;인코딩, 디코딩&lt;/STRONG&gt;에 관해 배워 나가고 있습니다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;이 내용들은 제가 세미나를 통해 배운 내용을 나름대로 정리하여 잊어 버리지 않게 하는 것이 용도이고, 저도 세미나 도중 이해 가지 않는 부분이 있으므로, 제가 올린 내용이 틀릴 수 있습니다. 내용에 틀린 점이 있을 시 지적해 주시면 즉시 내용을 수정 하도록 하겠습니다.&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;#1. 동영상이란?&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;동영상 압축의 기본을 알기 위해선 우선 동영상이 무엇인지 알아야 합니다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1977E00B4A811B5526&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/204FFA0D4A811B5624&quot; width=&quot;419&quot; height=&quot;241&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;br /&gt;
-그림1. 동영상의 구조-&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;위의 그림에서 알 수 있듯이 &lt;STRONG&gt;동영상은 정지된 사진(프레임)이 시간을 축으로 여러 장 모여 있는 것&lt;/STRONG&gt;입니다. 즉 주어진 시간 동안 연속으로 촬영된 사진이라 볼 수 있습니다.(사실 여기서 소리도 포함 되야 하지만, 소리는 별도의 인코딩 과정을 거친 후 먹싱 되므로 소리는 빼고 생각해 보겠습니다.) &lt;br /&gt;
&lt;br /&gt;그&lt;/FONT&gt;&lt;FONT size=2&gt;렇다면 동영상(RGB 비디오)의 데이터 크기는 어떻게 될까요? 프레임은 그림파일(Image)와 같습니다. 예를 들어 512×512의 동영상이 있다고 하면, 이 동영상의 한 프레임을 기준으로 가로 : 512, 세로 : 512개의 점(픽셀)으로 구성되어있으며, 1픽셀은 8bit(256 levels)입니다.&amp;nbsp; 그 중에서 회색이 차지하는 비율만 생각해 보면, Width×Height×Bit(512×512×8)가 됩니다. 그리고 3개의 Color들로 구성 되어있으므로, RGB의 경우 Width×Height×Bit×Color(512×512×8×3)이 되어 6291456bit가 됩니다. 6291456(bit) == 6144(kbit) == 6(mbit) 입니다.&lt;br /&gt;
&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;br /&gt;
512×512라는 비교적 작은 사이즈의 동영상도 무 압축일 경우, 한 프레임에 6메가라는 큰 사이즈가 되는 것입니다. 동영상서비스를 제공 할 경우 적어도 초당 24프레임을 보장해야 한다고 하니 1초의 동영상에 &lt;STRONG&gt;144메가&lt;/STRONG&gt;라는 큰 용량이 필요한 것입니다. 이것이 우리가 동영상 압축을 공부해야 하는 이유이기도 합니다.&lt;br /&gt;
&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;br /&gt;
네트워크 기술이 많이 발달하였지만, 이런한 무 압축 비디오까지 실시간으로 전송 하는 데는 역부족 입니다. 더군다나 요즘 많이 보급된 &lt;STRONG&gt;FullHD의 경우 1920×1080의 해상도를 지원해야 하기 때문에, 어마어마한 데이터 양&lt;/STRONG&gt;이 될 수 밖에 없습니다. 또한 네트워크 대역폭이 이 정보를 전부 전송해 줄 수 있다고 하더라도, 동영상의 크기를 줄여, 그 남는 대역폭을 이용하여 여러 다른 서비스를 제공 해 줄 수도 있을 것입니다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;#2. 동영상 압축 기법(동영상 압축을 위한 기본적인 방법)&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;이러한 동영상을 압축 하려면 어떻게 해야 할까요? &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;동영상 압축에는 크게 세 가지 기법이 사용 됩니다. 첫번째는 프레임 간의 상관관계 (temproal correlation)이고, 두번째는 공간적인 상관관계(spatial correlation)입니다. 세번째는 저주파 성분에 민감한 시각의 특성을 이용합니다 (DCT 변환). &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/20420C0F4A81280121&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1333370F4A8128015D&quot; width=&quot;344&quot; height=&quot;236&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1838EF114A81280102&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/166EF70C4A81280101&quot; width=&quot;344&quot; height=&quot;236&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -그림2. 프레임 9-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -그림3. 프레임 10-&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;먼저 &lt;STRONG&gt;프레임간의 상관관계&lt;/STRONG&gt;를 알아보도록 하겠습니다. 그림 2와 3은 각각 같은 동영상(football_sif.yuv)의 9번과 10번 프레임입니다. 마치 같은 그림처럼 닮아있습니다.&amp;nbsp; 근접한 프레임은 거의 비슷한 이미지로 이루어져 있다는 아이디어를 이용하여, 영상의 크기를 줄일 수 있습니다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/166290134A81280277&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/114DD20D4A81280367&quot; width=&quot;388&quot; height=&quot;326&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;FONT size=2&gt;-그림 4. Image의 공간적인 중복-&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=left&gt;&lt;FONT size=2&gt;그림 4에서 보는 것과 같이 한 장의 이미지에도 인접한 픽셀간의 정보는 거의 중복 된다는 것을 알 수 있습니다. 이방법으로도 영상의 크기를 줄 일 수 있을 것입니다.&lt;br /&gt;
&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;br /&gt;
Temporal correlation(프레임간의 상관관계)은&amp;nbsp; 그림 5,6처럼 현재 프레임(t)의 하나의 픽셀(x,y)은 이전 프레임(t-1)의 비슷한 위치(x,y)에 있을 가능성이 높고, 또한 두 필셀 사이에는 유사성이 높다는 것입니다.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1243180C4A812802AC&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/12725B114A81280397&quot; width=&quot;344&quot; height=&quot;275&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/14134D0B4A8128043F&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/204DD40D4A8128048E&quot; width=&quot;344&quot; height=&quot;275&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -그림 5. Frame(t)-&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -그림 6. Frame(t-1)-&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;이렇게 프레임(t)에서 프레임(t-1)과의 차를 계산해 보면 중복 데이터가 사라지고, 차이인 그림 7이 나오게 됩니다. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href=&quot;http://crynut84.tistory.com/script/powerEditor/pages/https://t1.daumcdn.net/cfile/tistory/1438BF0C4A81280474&quot;&gt;&lt;FONT size=2&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1351D8274A8128045F&quot; width=&quot;344&quot; height=&quot;237&quot; /&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;br /&gt;
&lt;FONT size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -그림 7. Frame(t) 와 Frame(t-1)의 Difference -&amp;nbsp;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;/FONT&gt;&lt;FONT size=2&gt;이번에 간단한 동영상의 정의와, 동영상을 압축하는 기본적인 방법을 알아 보았습니다. 다음에는 RGB와 YUV를 알아보고, 위에서 간단히 소개한 압축의 기법들을 자세히 소개하는(주파수 도메인(DCT)을 이용한 방법, Motion Estimation 등) 순으로 진행 할 예정이며, 기본적인 지식을 갖춘 후, H.264에 대해서도 알아 보도록 하겠습니다.&lt;/FONT&gt;&lt;/P&gt;</description>
      <category>MultiMedia</category>
      <category>H.264</category>
      <category>동영상</category>
      <category>인코딩</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/55</guid>
      <comments>https://crynut84.tistory.com/55#entry55comment</comments>
      <pubDate>Tue, 11 Aug 2009 16:18:46 +0900</pubDate>
    </item>
    <item>
      <title>블로그 스킨 &amp;amp; 글꼴 변경</title>
      <link>https://crynut84.tistory.com/54</link>
      <description>&lt;P&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕&quot;&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;﻿&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;﻿안녕하세요? 맨날맑음 입니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;다른 사용자의 블록를 돌아다닐때 마다 멋진 블로그가 많아 새롭게 블로그를 좀 꾸며 보려고 했는데; 역시 웹지식이 너무 없는 관계로 쉽지 않군요..(특히..CSS)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&lt;SPAN style=&quot;FONT-SIZE: 12pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 11pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 10pt&quot;&gt;스킨 변경한다는 핑계로 포스팅을 멈추었는데;; 이제 다시 포스팅을 하고, 스킨은 HTML과 CSS, 스크립트를 좀 공부해가면서 천천히 변경해 보아야겠습니다.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <category>스킨</category>
      <category>폰트</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/54</guid>
      <comments>https://crynut84.tistory.com/54#entry54comment</comments>
      <pubDate>Sat, 8 Aug 2009 16:43:19 +0900</pubDate>
    </item>
    <item>
      <title>티스토리 초대장 나눠 드려요(매진)</title>
      <link>https://crynut84.tistory.com/53</link>
      <description>&lt;DIV&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #ebebeb 1px solid; BORDER-LEFT: #ebebeb 1px solid; PADDING-BOTTOM: 30px; LINE-HEIGHT: 1.8; BACKGROUND-COLOR: #fff; PADDING-LEFT: 30px; PADDING-RIGHT: 30px; COLOR: #656565; BORDER-TOP: #ebebeb 1px solid; BORDER-RIGHT: #ebebeb 1px solid; PADDING-TOP: 30px&quot;&gt;&lt;SPAN style=&quot;PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #fe842a; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; FONT: 8pt/1 맑은 고딕, Sans-serif; COLOR: #fff; PADDING-TOP: 2px&quot;&gt;i n v i t a t i o n&lt;/SPAN&gt; 
&lt;DIV style=&quot;BORDER-BOTTOM: #e3e3e3 3px solid; MARGIN: 23px 0px 32px; FONT-FAMILY: 맑은 고딕&quot;&gt;
&lt;H3 style=&quot;BORDER-BOTTOM: #fe842a 3px solid; PADDING-BOTTOM: 10px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; FONT: bold 14pt/1 맑은 고딕; FLOAT: left; PADDING-TOP: 0px&quot;&gt;티스토리 초대장&lt;/H3&gt;
&lt;DIV style=&quot;MARGIN-TOP: 9px; FLOAT: right&quot;&gt;+ 남은 초대장 수 : &lt;SPAN style=&quot;FONT-FAMILY: 맑은 고딕; COLOR: #fe842a; FONT-WEIGHT: bold&quot;&gt;00&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P &gt;안녕하세요!&lt;/P&gt;
&lt;P&gt;티스토리에 보금자리를 마련하시려는 여러분께 초대장을 배포해 드리려고 합니다.&lt;/P&gt;
&lt;P&gt;나만의, 내 생각을, 내 기억을 담는 소중한 블로그를 만들고 싶다면 티스토리로 시작해보세요!&lt;/P&gt;
&lt;P&gt;티스토리 블로그는 초대에 의해서만 가입이 가능합니다. 원하시는 분은 &lt;STRONG style=&quot;TEXT-DECORATION: underline&quot;&gt;댓글에 E-mail 주소를&lt;/STRONG&gt; 남겨주시면 초대장을 보내드립니다. 남겨주실 때에는 꼭 비밀댓글로 남겨주세요!&lt;/P&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #e5e5e5 5px solid; FONT-FAMILY:맑은고딕; BORDER-LEFT: #e5e5e5 5px solid; PADDING-BOTTOM: 20px; BACKGROUND-COLOR: #f9f9f9; MARGIN: 25px 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: #e5e5e5 5px solid; BORDER-RIGHT: #e5e5e5 5px solid; PADDING-TOP: 20px&quot;&gt;&amp;nbsp;선착순으로 초대장 배포합니다^^&lt;/DIV&gt;
&lt;DIV style=&quot;MARGIN: 25px 0px 10px; FONT: 11px/1.5 1 맑은 고딕; COLOR: #a1a1a1&quot;&gt;
&lt;DIV style=&quot;MARGIN-BOTTOM: 10px; FONT-WEIGHT: bold&quot;&gt;티스토리 이래서 좋아요!&lt;/DIV&gt;
&lt;DIV&gt;1. 이미지, 동영상, 오디오, 파일까지! 무한 용량과 강력한 멀티미디어를 올릴 수 있어요!&lt;/DIV&gt;
&lt;DIV&gt;2. 스킨위자드로 스킨을 내맘대로~ 거기에 기능 확장 플러그인까지!&lt;/DIV&gt;
&lt;DIV&gt;3. 내가 원하는대로 myID.com으로 블로그 주소를 만들 수 있어요!&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <category>etc</category>
      <category>맨날맑음</category>
      <category>초대장</category>
      <category>티스토리 초대장</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/53</guid>
      <comments>https://crynut84.tistory.com/53#entry53comment</comments>
      <pubDate>Thu, 6 Aug 2009 01:33:22 +0900</pubDate>
    </item>
    <item>
      <title>주민등록번호 유효성 검사하기!</title>
      <link>https://crynut84.tistory.com/52</link>
      <description>&lt;br /&gt;
안녕하세요? 맨날맑음 입니다.&lt;br /&gt;
&lt;br /&gt;회원가입 기능을 구현하다 보면, 주민등록번호가 올바른지 체크해야 하는 경우가 생기게 됩니다.&lt;br /&gt;
우선 주민등록번호가 어떠한 형태(?)로 이루어 졌는지 알아 볼 필요가 있습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #f3c534 1px dashed; BORDER-LEFT: #f3c534 1px dashed; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fefeb8; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #f3c534 1px dashed; BORDER-RIGHT: #f3c534 1px dashed; PADDING-TOP: 10px&quot; class=txc-textbox&gt;주민등록번호는 총 &lt;STRONG&gt;13자리 숫자&lt;/STRONG&gt;로 구성되어 있습니다.&lt;br /&gt;
모두 아시는 바와같이 앞의 6자리는 태어난 날의 년, 월, 일을 나타냅니다&amp;nbsp;&amp;nbsp;&lt;br /&gt;
뒤의 7자리는 조금 복잡한데요.&amp;nbsp;&lt;br /&gt;
&amp;nbsp;# 1번 자리 : 성별 (ex. 남자 : 1또는3, 여자 : 2또는4)&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp;- 3과 4는 낮설겠지만 00년 이후 출생자부터는 남자는 3 여자는 4입니다.&lt;br /&gt;
&amp;nbsp;# 2~5번 자리 : 출생 신고 당시의 거주지 관할 동사무소의 지역코드&lt;br /&gt;
&amp;nbsp;# 6번 자리 : 출생 신고 날짜&lt;br /&gt;
&amp;nbsp;# 7번 자리 : 검정 코드&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp;- 7번 자리가 매우 중요합니다. 이것은 앞의 12자리의 유효성을 검증해 줄 매직넘버(?)로 쓰이게 됩니다.&amp;nbsp;&lt;br /&gt;
&lt;/DIV&gt;&lt;br /&gt;
주민등록번호의 유효성을 알아 보기 위해서는 각 자리수의 미리 지정된 값을 곱하여, 곱한 결과를 전부 더하고, &lt;br /&gt;
그 값을 11로 나눈 후, 그 결과 값(나머지)11에서 빼어 13번째 자리수인 검정 코드와 일치하면 유효하게 됩니다.&lt;br /&gt;
참.. 말로 할려니 쉽지 않습니다.&lt;br /&gt;
&lt;br /&gt;주민등록번호가 123456 -&amp;nbsp;1234567 이라고 예를 들어 보겠습니다.&lt;br /&gt;
&lt;STRONG&gt;# 1.&lt;/STRONG&gt; 아래와 같이 검정 코드인 7을 제외한 각자리에 &lt;STRONG&gt;&lt;FONT color=#ff8b16&gt;미리 지정된 값(234567892345)&lt;/FONT&gt;&lt;/STRONG&gt;을 각각 곱하여 줍니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/136CB7144A797B9D9C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F136CB7144A797B9D9C&quot; width=&quot;405&quot; height=&quot;112&quot; alt=&quot;&quot; filename=&quot;포맷변환_step1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;STRONG&gt;# 2.&lt;/STRONG&gt; 각 자리에서 곱한 결과를 모두 더해 줍니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/205D6D134A797C3AA6&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F205D6D134A797C3AA6&quot; width=&quot;336&quot; height=&quot;49&quot; alt=&quot;&quot; filename=&quot;step2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;STRONG&gt;# 3.&lt;/STRONG&gt; 더한 결과(206)을 11로 나누어 줍니다&lt;STRONG&gt;(% 나머지 연산&lt;/STRONG&gt;).&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/201160104A797DE737&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F201160104A797DE737&quot; width=&quot;119&quot; height=&quot;33&quot; alt=&quot;&quot; filename=&quot;포맷변환_step3.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;STRONG&gt;# 4.&lt;/STRONG&gt; 11에서 나머지의 결과를 빼줍니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2031191B4A797EAC5F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2031191B4A797EAC5F&quot; width=&quot;97&quot; height=&quot;34&quot; alt=&quot;&quot; filename=&quot;포맷변환_step4.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;STRONG&gt;# 5. 나머지 3과 검증코드 7이 같은지 확인 합니다. 같으면 유효한 주민등록번호&lt;/STRONG&gt;입니다. 이 경우 11에서 10을 뺀다던지, 1을 빼면 2자리의 결과가 나오게 됩니다. 그럴때는 뒤의 1자리만 취하여 비교하시면 됩니다. (이와같은 이유로 4번의 결과에 % 연산으로 10을 한번 더해주면 뒤의 1자리만 취할 수 있겠죠?)&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;# 결론 .&lt;/STRONG&gt; 주민등록번호 &lt;STRONG&gt;123456 -&amp;nbsp;1234567는 틀린 주민번호&lt;/STRONG&gt; 입니다!&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
C# &lt;STRONG&gt;코드로 만들어&lt;/STRONG&gt; 보겠습니다.&lt;br /&gt;

&lt;BLOCKQUOTE&gt;코드 작성시 고려 사항&lt;br /&gt;
&amp;nbsp; # 1. 주민등록번호가 13자리 인가?&lt;br /&gt;
&amp;nbsp; # 2. 13자리 모두 숫자인가?&lt;br /&gt;
&amp;nbsp; # 3. 위의 공식에 부합하는가?&lt;/BLOCKQUOTE&gt;
&lt;DIV style=&quot;BORDER-BOTTOM: #f3c534 1px solid; BORDER-LEFT: #f3c534 1px solid; PADDING-BOTTOM: 10px; BACKGROUND-COLOR: #fefeb8; PADDING-LEFT: 10px; PADDING-RIGHT: 10px; BORDER-TOP: #f3c534 1px solid; BORDER-RIGHT: #f3c534 1px solid; PADDING-TOP: 10px&quot; class=txc-textbox&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: blue; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;bool&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;IsAvailableRRN&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;string&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;RRN&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)&lt;?xml:namespace prefix = o ns = &quot;urn:schemas-microsoft-com:office:office&quot; /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;공백&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;제거&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;RRN&lt;/SPAN&gt;&lt;FONT color=#000000&gt; = &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;RRN&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Replace&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot; &quot;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;&quot;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;문자&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt; '-' &lt;/SPAN&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;제거&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;RRN&lt;/SPAN&gt;&lt;FONT color=#000000&gt; = &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;RRN&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Replace&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;-&quot;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;, &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #a31515&quot;&gt;&quot;&quot;&lt;/SPAN&gt;&lt;FONT color=#000000&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;주민등록번호가&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt; 13&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;자리인가&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;RRN&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Length&lt;/SPAN&gt;&lt;FONT color=#000000&gt; != 13)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;false&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;o:p&gt;&lt;FONT color=#000000 size=2&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;int&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;sum&lt;/SPAN&gt;&lt;FONT color=#000000&gt; = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;for&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;int&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;i&lt;/SPAN&gt;&lt;FONT color=#000000&gt; = 0; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;i&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &amp;lt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;RRN&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Length&lt;/SPAN&gt;&lt;FONT color=#000000&gt; - 1; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;i&lt;/SPAN&gt;&lt;FONT color=#000000&gt;++)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;char&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;c&lt;/SPAN&gt;&lt;FONT color=#000000&gt; = &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;RRN&lt;/SPAN&gt;&lt;FONT color=#000000&gt;[&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;i&lt;/SPAN&gt;&lt;FONT color=#000000&gt;];&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;숫자로&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;이루어져&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;있는가&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (!&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;char&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;IsNumber&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;c&lt;/SPAN&gt;&lt;FONT color=#000000&gt;))&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;false&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;i&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &amp;lt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;RRN&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Length&lt;/SPAN&gt;&lt;FONT color=#000000&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;//&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;지정된&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;숫자로&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;각&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;자리를&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;나눈&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;후&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;더한다&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;sum&lt;/SPAN&gt;&lt;FONT color=#000000&gt; += &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;int&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Parse&lt;/SPAN&gt;&lt;FONT color=#000000&gt;(&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;c&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;ToString&lt;/SPAN&gt;&lt;FONT color=#000000&gt;()) * ((&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;i&lt;/SPAN&gt;&lt;FONT color=#000000&gt; % 8) + 2);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green&quot;&gt;// &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;검증코드와&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;결과&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;값이&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt; &lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: green; mso-ascii-font-family: 'Bitstream Vera Sans Mono'; mso-hansi-font-family: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot;&gt;&lt;FONT face=&quot;맑은 고딕&quot;&gt;같은가&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; COLOR: green; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;if&lt;/SPAN&gt;&lt;FONT color=#000000&gt; (!((((11 - (&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;sum&lt;/SPAN&gt;&lt;FONT color=#000000&gt; % 11)) % 10).&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;ToString&lt;/SPAN&gt;&lt;FONT color=#000000&gt;()) == ((&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;RRN&lt;/SPAN&gt;&lt;FONT color=#000000&gt;[&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;RRN&lt;/SPAN&gt;&lt;FONT color=#000000&gt;.&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;Length&lt;/SPAN&gt;&lt;FONT color=#000000&gt; - 1]).&lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: #010001&quot;&gt;ToString&lt;/SPAN&gt;&lt;FONT color=#000000&gt;())))&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;false&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT color=#000000&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;SPAN style=&quot;mso-spacerun: yes&quot;&gt;&lt;FONT color=#000000&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;return&lt;/SPAN&gt;&lt;FONT color=#000000&gt; &lt;/FONT&gt;&lt;SPAN style=&quot;COLOR: blue&quot;&gt;true&lt;/SPAN&gt;&lt;FONT color=#000000&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style=&quot;TEXT-ALIGN: left; MARGIN: 0cm 0cm 0pt; WORD-BREAK: keep-all; mso-layout-grid-align: none&quot; class=MsoNormal align=left&gt;&lt;SPAN style=&quot;FONT-FAMILY: 'Bitstream Vera Sans Mono'; mso-bidi-font-size: 10.0pt; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-no-proof: yes&quot; lang=EN-US&gt;&lt;FONT size=2&gt;&lt;FONT color=#000000&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;/P&gt;&lt;/DIV&gt;</description>
      <category>.NET/Visual C#</category>
      <category>유효성</category>
      <category>주민등록번호</category>
      <category>주민등록번호 검사</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/52</guid>
      <comments>https://crynut84.tistory.com/52#entry52comment</comments>
      <pubDate>Wed, 5 Aug 2009 22:06:47 +0900</pubDate>
    </item>
    <item>
      <title>윈도우간 도킹 기능(자석 윈도우)</title>
      <link>https://crynut84.tistory.com/50</link>
      <description>안녕하세요? 맨날맑음 입니다.&lt;br /&gt;
&lt;br /&gt;몇몇 프로그램을 보면, 윈도우끼리 도킹 기능으로 서로 일정거리 만큼 가까워지면 딱 달라붙게 만들어진 것을 볼 수 있습니다. 이런 기능의 명칭을 정확히 몰라서; 일단 제목은 '자석 윈도우'라고 정해 보았는데요;&lt;br /&gt;
&lt;br /&gt;밑의 예(이스트소프트의 알송)에서 볼 수 있듯이 각 윈도우끼리는 가까이 가면 달라 붙고, 제일 위의 윈도우를 이동하면 붙어있는 윈도우도 따라서 이동하게 됩니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/201542144A67E1B343&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F201542144A67E1B343&quot; width=&quot;610&quot; height=&quot;426&quot; alt=&quot;&quot; filename=&quot;포맷변환_dock1.gif&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
이런 기능을 간단하게 Windows Form을 이용하여 만드는 방법을 알아보려 합니다. 이런 기능을 제공하는 Class Library가 있을까 찾아 보다가 결국 찾지는 못하고, 한 외국 사이트에 이와같은 소스를 발견하였습니다. 현재 출처를 정확하게 기억 나지 않습니다. 그래서&amp;nbsp;완성된 소스는 올리지 않습니다.(필요하신분은 요청하세요)&lt;br /&gt;
&lt;STRONG&gt;Form1.cs&lt;/STRONG&gt;&lt;br /&gt;
&lt;PRE class=c#:firstline[1] name=&quot;code&quot;&gt; private void Form1_Move(object sender, EventArgs e)
        {
            if (isForm2Docked)
            {
                tempForm2.SetDesktopLocation(tempForm2.Location.X + (this.Location.X - prevLoc.X),
                    tempForm2.Location.Y + (this.Location.Y - prevLoc.Y));
            }
            prevLoc.X = this.Location.X;
            prevLoc.Y = this.Location.Y;
        }
 &lt;/PRE&gt;메인이 되는 폼의 Move 이벤트에서는 현재 서브폼이 붙어있는지 확인하여, 붙어있으면 위치를 함께 옮겨줍니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;Form2.cs&lt;/STRONG&gt;&lt;br /&gt;
&lt;PRE class=c#:firstline[1] name=&quot;code&quot;&gt;private void Form2_Move(object sender, EventArgs e)
        {
            bool amIDocked = false;
            Point newPoint = GetNewFormPosition(this, passedInForm, out amIDocked);
            this.SetDesktopLocation(newPoint.X, newPoint.Y);
            ((Form1)passedInForm).isForm2Docked = amIDocked;
        }

        public Point GetNewFormPosition(Form thisForm, Form parentForm, out bool isDocked)
        {
            int[] xRange = new int[2] { parentForm.Location.X, parentForm.Location.X + parentForm.Width };
            int[] yRange = new int[2] { parentForm.Location.Y, parentForm.Location.Y + parentForm.Height };
            int xGap = Math.Abs(thisForm.Location.X - parentForm.Location.X);
            int yGap = Math.Abs(thisForm.Location.Y - parentForm.Location.Y);
            int leftGap = Math.Abs((thisForm.Location.X + thisForm.Width) - parentForm.Location.X);
            int rightGap = Math.Abs(thisForm.Location.X - (parentForm.Location.X + parentForm.Width));
            int topGap = Math.Abs((thisForm.Location.Y + thisForm.Height) - parentForm.Location.Y);
            int bottomGap = Math.Abs(thisForm.Location.Y - (parentForm.Location.Y + parentForm.Height));
            int xNew = thisForm.Location.X;
            int yNew = thisForm.Location.Y;
            isDocked = false;

            if ((leftGap &amp;lt;= dockGap) &amp;amp;&amp;amp; (((thisForm.Location.Y &amp;gt;= yRange[0]) &amp;amp;&amp;amp; (thisForm.Location.Y &amp;lt;= yRange[1])) ||
                ((thisForm.Location.Y + parentForm.Height &amp;gt;= yRange[0]) &amp;amp;&amp;amp; (thisForm.Location.Y + parentForm.Height &amp;lt;= yRange[1]))))
            {
                xNew = parentForm.Location.X - thisForm.Width;
                if (yGap &amp;lt;= dockGap) yNew = parentForm.Location.Y;
                isDocked = true;
            }
            if ((rightGap &amp;lt;= dockGap) &amp;amp;&amp;amp; (((thisForm.Location.Y &amp;gt;= yRange[0]) &amp;amp;&amp;amp; (thisForm.Location.Y &amp;lt;= yRange[1])) ||
                ((thisForm.Location.Y + parentForm.Height &amp;gt;= yRange[0]) &amp;amp;&amp;amp; (thisForm.Location.Y + parentForm.Height &amp;lt;= yRange[1]))))
            {
                xNew = parentForm.Location.X + parentForm.Width;
                if (yGap &amp;lt;= dockGap) yNew = parentForm.Location.Y;
                isDocked = true;
            }
            if ((topGap &amp;lt;= dockGap) &amp;amp;&amp;amp; (((thisForm.Location.X &amp;gt;= xRange[0]) &amp;amp;&amp;amp; (thisForm.Location.X &amp;lt;= xRange[1])) ||
                ((thisForm.Location.X + parentForm.Width &amp;gt;= xRange[0]) &amp;amp;&amp;amp; (thisForm.Location.X + parentForm.Width &amp;lt;= xRange[1]))))
            {
                yNew = parentForm.Location.Y - thisForm.Height;
                if (xGap &amp;lt;= dockGap) xNew = parentForm.Location.X;
                isDocked = true;
            }
            if ((bottomGap &amp;lt;= dockGap) &amp;amp;&amp;amp; (((thisForm.Location.X &amp;gt;= xRange[0]) &amp;amp;&amp;amp; (thisForm.Location.X &amp;lt;= xRange[1])) ||
                ((thisForm.Location.X + parentForm.Width &amp;gt;= xRange[0]) &amp;amp;&amp;amp; (thisForm.Location.X + parentForm.Width &amp;lt;= xRange[1]))))
            {
                yNew = parentForm.Location.Y + parentForm.Height;
                if (xGap &amp;lt;= dockGap) xNew = parentForm.Location.X;
                isDocked = true;
            }
            return new Point(xNew, yNew);
        }
&lt;/PRE&gt;&lt;br /&gt;
서브폼에서 좀 복잡해 보이긴 하지만, 메인폼의 영역을 알아와, 현재 서브폼의 위치가 달라 붙어야하는 위치라면 붙여 주고, 메인폼에 그 사실을 알리는 역할을 합니다.&lt;br /&gt;
이 소스를 응용하면, 상용프로그램처럼 윈도우간 도킹 기능을 만드는 것도 어렵지 않을 것 같습니다.&lt;br /&gt;
&lt;br /&gt;ps. 좌표를 일일이 비교해가며 구현하는 방법 외에 Class Library나 다른 방법을 아시는 분은 꼭 피드백을 부탁 드립니다!!</description>
      <category>.NET/Visual C#</category>
      <category>도킹</category>
      <category>윈도우간 도킹</category>
      <category>자석 윈도우</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/50</guid>
      <comments>https://crynut84.tistory.com/50#entry50comment</comments>
      <pubDate>Thu, 16 Jul 2009 20:27:57 +0900</pubDate>
    </item>
    <item>
      <title>현재 실행중인 프로그램 목록 얻어오기</title>
      <link>https://crynut84.tistory.com/49</link>
      <description>&lt;br /&gt;
안녕하세요? 맨날맑음 입니다.&lt;br /&gt;
&lt;br /&gt;윈도우에서 [Ctrl + Alt + Del]키를 누르면 아래와 같이 &lt;STRONG&gt;Windows 작업관리자&lt;/STRONG&gt;를 볼 수 있습니다. 응용 프로그램 탭을 보면 &lt;STRONG&gt;&lt;FONT color=#193da9&gt;현재 실행 중인 프로그램의 목록&lt;/FONT&gt;&lt;/STRONG&gt;을 확인 할 수 있는데요. 이와같이 프로그램을 만들다 보면 특정한 프로그램을 선택하는 창을 제공해야 할 때가 있습니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1679D21C4A5E8E607D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F1679D21C4A5E8E607D&quot; width=&quot;440&quot; height=&quot;459&quot; alt=&quot;&quot; filename=&quot;포맷변환_process1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
이런 기능을 만들기 위해서는 Win32 API의 도움을 받아야합니다.(.net class library에서 지원해 주는지는 잘 모르겠습니다. 아시는분은 꼭 알려주시길..) &lt;FONT color=#8e8e8e&gt;&lt;SPAN style=&quot;FONT-SIZE: 8pt&quot;&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;&lt;FONT size=+0&gt;&lt;SPAN style=&quot;FONT-SIZE: 9pt&quot;&gt;잡설이지만 .NET의 Windows Form 개발시 자꾸만 Win32 API를 사용하게 되는군요'' 분명 그에 매칭하는 .NET Class가 있을꺼라는 생각이 드는데요(일부 크리티컬한 기능 제외);&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/FONT&gt;Win32 API의 EnumWindows 함수는 현재 실행중인 프로세서들의 목록을 얻어올 수 있는 기능을 제공합니다.&lt;br /&gt;
&lt;A href=&quot;http://msdn.microsoft.com/en-us/library/ms633497(VS.85).aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/ms633497(VS.85).aspx&lt;/A&gt;&amp;nbsp;이 링크에서 보다 자세한 MSDN 도움말을 확인 할 수있습니다.&lt;br /&gt;
&lt;br /&gt;C#에서 사용시에는 다음과 같이 선언 해 주어야 하는데, 한가지&amp;nbsp;고민되는 사항은 첫번째 인자가 callback 함수의 &lt;STRONG&gt;'함수포인터'&lt;/STRONG&gt;를 넣어야 되는 것입니다. 두번째 인자의 의미는 사용자 임의의 데이터를 넘길 때 사용합니다.&lt;br /&gt;
&lt;STRONG&gt;[&lt;FONT color=#0686a8&gt;DllImport&lt;/FONT&gt;(&quot;&lt;FONT color=#840000&gt;user32.dll&lt;/FONT&gt;&quot;, &lt;FONT color=#193da9&gt;CharSet&lt;/FONT&gt;=&lt;FONT color=#0686a8&gt;CharSet&lt;/FONT&gt;.Auto, SetLastError=&lt;FONT color=#193da9&gt;true&lt;/FONT&gt;)]&lt;br /&gt;
&lt;FONT color=#193da9&gt;public static extern bool &lt;/FONT&gt;&lt;FONT color=#840000&gt;EnumWindows&lt;/FONT&gt;(&lt;FONT color=#0686a8&gt;EnumWindowsCallback &lt;/FONT&gt;callback, &lt;FONT color=#193da9&gt;int &lt;/FONT&gt;extraData);&lt;/STRONG&gt;&lt;br /&gt;
그런데 C#에는 함수포인터가 없기 때문에 이를 대체하기 위한 수단으로 &lt;STRONG&gt;'Delegate'&lt;/STRONG&gt;를 사용해야 합니다.&lt;br /&gt;
&lt;br /&gt;그래서 아래과 같이 EnumWindows의 Callback 함수와 형식이 일치하는 Delegate를 선언해 줍니다.&lt;br /&gt;

&lt;BLOCKQUOTE&gt;&lt;STRONG&gt;&lt;FONT color=#193da9&gt;public delegate bool&lt;/FONT&gt; &lt;FONT color=#0686a8&gt;EnumWindowCallback&lt;/FONT&gt;(&lt;FONT color=#193da9&gt;int &lt;/FONT&gt;hwnd, &lt;FONT color=#193da9&gt;int &lt;/FONT&gt;lParam);&lt;/STRONG&gt;&lt;/BLOCKQUOTE&gt;배웠으니 시험도 해볼겸 간단한 예제를 만들어 보겠습니다. Windows Form 프로젝트를 생성합니다.&lt;br /&gt;
Form위에 프로그램의 목록과 아이콘을 띄워줄 ListView를 가져다 놓습니다.&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1579041C4A5E8E8D84&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F1579041C4A5E8E8D84&quot; width=&quot;520&quot; height=&quot;388&quot; alt=&quot;&quot; filename=&quot;포맷변환_process2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;br /&gt;
각자 입맛에 맛게 속성을 조정해 줍니다. 저는 Form크기에 맞게 딱 붙도록 Dock속성을 Fill로 변경해 보았습니다.&lt;br /&gt;
코드(form.cs)로 가서 아래의 코드를 추가합니다.&lt;br /&gt;
&lt;PRE class=c#:firstline[1] name=&quot;code&quot;&gt;using System;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Sample
{
    public partial class Form1 : Form
    {
        public delegate bool EnumWindowCallback(int hwnd, int lParam);
        
        [DllImport(&quot;user32.dll&quot;)]
        public static extern int EnumWindows(EnumWindowCallback callback, int y);

        [DllImport(&quot;user32.dll&quot;)]
        public static extern int GetParent(int hWnd);

        [DllImport(&quot;user32.dll&quot;)]
        public static extern int GetWindowText(int hWnd, StringBuilder text, int count);

        [DllImport(&quot;user32.dll&quot;)]
        public static extern long GetWindowLong(int hWnd, int nIndex);

        [DllImport(&quot;user32.dll&quot;)]
        public static extern IntPtr GetClassLong(IntPtr hwnd, int nIndex);

        const int GCL_HICON = -14; //GetWindowLong을 호출할 때 쓸 인자
        const int GCL_HMODULE = -16;
        ImageList imgList;//ListView의 Image로 쓸 리스트
               

        public Form1()
        {
            InitializeComponent();
            imgList = new ImageList();
            imgList.ImageSize = new Size(16, 16);
            listView1.SmallImageList = imgList;
            listView1.View = View.List;
            //CallBack 델리게이트 생성
            EnumWindowCallback callback = new EnumWindowCallback(EnumWindowsProc);
            EnumWindows(callback, 0);

        }
       
        public bool EnumWindowsProc(int hWnd, int lParam)
        {            
            //윈도우 핸들로 그 윈도우의 스타일을 얻어옴
            UInt32 style = (UInt32)GetWindowLong(hWnd, GCL_HMODULE);
            //해당 윈도우의 캡션이 존재하는지 확인
            if ((style &amp;amp; 0x10000000L) == 0x10000000L &amp;amp;&amp;amp; (style &amp;amp; 0x00C00000L) == 0x00C00000L)
            {
                //부모가 바탕화면인지 확인
                if (GetParent(hWnd) == 0)
                {
                    StringBuilder Buf = new StringBuilder(256);
                    //응용프로그램의 이름을 얻어온다
                    if (GetWindowText(hWnd, Buf, 256) &amp;gt; 0)
                    {
                        try
                        {
                            //HICON 아이콘 핸들을 얻어온다
                            IntPtr hIcon = GetClassLong((IntPtr)hWnd, GCL_HICON);
                            //아이콘 핸들로 Icon 객체를 만든다
                            Icon icon = Icon.FromHandle(hIcon);
                            imgList.Images.Add(icon);                            
                        }
                        catch (Exception)
                        {
                            //예외의 경우는 자기 자신의 윈도우인 경우이다.
                            imgList.Images.Add(this.Icon);
                        }
                        listView1.Items.Add(new ListViewItem(Buf.ToString(), listView1.Items.Count));
                    }
                }
            }
            return true;
        }    
    }
}
&lt;/PRE&gt;&lt;br /&gt;
소스가 좀 많아 보이긴 하는데, 복잡하진 않습니다. Win32API들을 사용하기 위해 &lt;FONT style=&quot;BACKGROUND-COLOR: #ffffff&quot; color=#8c3c04&gt;EnumWindows&lt;/FONT&gt;, &lt;FONT color=#8c3c04&gt;GetParent&lt;/FONT&gt;, &lt;FONT color=#8c3c04&gt;GetWindowText&lt;/FONT&gt;, &lt;FONT color=#8c3c04&gt;GetWindowLong&lt;/FONT&gt;, &lt;FONT color=#8c3c04&gt;GetClassLong&lt;/FONT&gt;을 선언해 줍니다.&lt;br /&gt;
&lt;FONT color=#0686a8&gt;ListView&lt;/FONT&gt;의 Image를 넣기 위한 &lt;FONT color=#0686a8&gt;ImageList&lt;/FONT&gt;도 추가합니다.&lt;br /&gt;
&lt;br /&gt;생성자에서는 &lt;FONT color=#0686a8&gt;ImageList&lt;/FONT&gt;와 &lt;FONT color=#0686a8&gt;ListView&lt;/FONT&gt;의 초기화를 하고, Delegete를 생성하여, &lt;FONT color=#8c3c04&gt;EnumWindows&lt;/FONT&gt;를 호출해 줍니다.&lt;br /&gt;
그럼 OS는 현재 실행중인 프로세서를 EnumWindowsProc으로 전달해 주게 됩니다. 단 EnumWindowsProc으로 전달되는 것은 프로세스 목록(전체)이 아니라 한번에 하나씩 들어오게 됩니다.&lt;br /&gt;
&lt;br /&gt;EnumWindowsProc에서는 첫번째 매개변수로 들어온 윈도우 핸들을 이용하여 GetWindowLong을 호출해 윈도우의 스타일을 얻어오고, 해당윈도우의 캡션이 존재하는지 확인합니다.&lt;br /&gt;
&lt;br /&gt;그 다음으로 부모가 바탕화면인지 확인하여, 이것이 최상위의 윈도우인지 확인하게 됩니다. GetWindowText함수를 이용하여, 윈도우(응용프로그램)의 이름을 얻어온후, &lt;STRONG&gt;GetClassLong을 사용하여 해당 윈도우의 HICON 아이콘핸들을 얻어오게 됩니다(.net에서 사용하기 위해 IntPtr 사용), 이렇게 얻어온 아이콘핸들을 이용하여 .net의 Icon 클래스의 static메소드인 FromHandle을 이용하여 Icon 객체를 생성합니다.&lt;br /&gt;
&lt;/STRONG&gt;&lt;br /&gt;
예외처리 구문은 자기 자신의 윈도우일 경우 Icon을 못얻어오는 경우가 생겨서, try를 사용하였습니다.&lt;br /&gt;
EnumWindowsProc의 return은 true로 해주셔야, 계속하여 호출하게 됩니다. 상황에따라 원하는 윈도우를 찾은다음에 false를 return하면 되겠습니다. 실행시켜 보니 잘되는군요!&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/12795E1C4A5E8EB07D&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F12795E1C4A5E8EB07D&quot; width=&quot;386&quot; height=&quot;209&quot; alt=&quot;&quot; filename=&quot;포맷변환_process3.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;https://t1.daumcdn.net/cfile/tistory/146AB41A4A5E8F2472&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://i1.daumcdn.net/cfs.tistory/v/0/blog/image/extension/zip.gif&quot; style=&quot;vertical-align: middle;&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;Sample.zip&lt;/a&gt;&lt;/div&gt;
사실, API의 EnumWindows를 사용하지 않고 .net의 Process 클래스를 사용해도 현재 사용중인 프로세스의 목록을 얻어, 바탕화면이 부모인지 확인하고 MainWindowTitle을 확인하여 이와같은 기능을 만들 수 도 있습니다.(하지만 탐색기 같은 일부창의 경우 윈도우의 이름을 얻어올 수 없는 문제가 있습니다.) 아래는 Process를 이용하는 간단한 예제입니다.&lt;br /&gt;
&lt;PRE class=c#:firstline[1] name=&quot;code&quot;&gt;Process[] pro = Process.GetProcesses();            
for (int i = 0; i &amp;lt; pro.Length; i++)
{
     if (pro[i].MainWindowHandle != IntPtr.Zero)
     {
          if (pro[i].MainWindowTitle == &quot;&quot;)
              continue;
       //To do..
     }
}
&lt;/PRE&gt;</description>
      <category>.NET/Visual C#</category>
      <category>EnumWindows</category>
      <category>Process 목록</category>
      <category>작업 관리자</category>
      <category>프로그램 목록</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/49</guid>
      <comments>https://crynut84.tistory.com/49#entry49comment</comments>
      <pubDate>Thu, 16 Jul 2009 11:24:33 +0900</pubDate>
    </item>
    <item>
      <title>SystemParametersInfo() 트레이 주위에 윈도우 생성 하기</title>
      <link>https://crynut84.tistory.com/47</link>
      <description>&lt;P&gt;안녕하세요? 맨날맑음 입니다.&lt;br /&gt;
&lt;br /&gt;네이트온을 사용하다 보면 친구가 로그인 했더나 대화 요청이 들어올때 &lt;STRONG&gt;트레이 아이콘 주위에 알림창&lt;/STRONG&gt;이 뜨는것을&amp;nbsp;볼 수 &amp;nbsp;있습니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/20405E154A534B643E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F20405E154A534B643E&quot; width=&quot;281&quot; height=&quot;166&quot; alt=&quot;&quot; filename=&quot;포맷변환_tray.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;/P&gt;이와 같이 트레이창의 위치를 윈도우 주위로 위치하는 것은 .NET에서도 &lt;STRONG&gt;Win32API의 SystemParamete&lt;br /&gt;
rsInfo&lt;/STRONG&gt;를 사용하면 간단하게 구현 할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;.NET에서 Win32API를 사용하기위해 우선 &lt;STRONG&gt;using System.Runtime.InteropServices;&lt;/STRONG&gt; 이 필요합니다. &lt;br /&gt;
또한 SystemParametersInfo에 대한 아래와 같은 선언도 필요합니다.&lt;br /&gt;

&lt;BLOCKQUOTE&gt;&lt;STRONG&gt;&amp;nbsp;[&lt;FONT color=#49b5d5&gt;DllImport&lt;/FONT&gt;(&lt;FONT color=#8c044b&gt;&lt;FONT color=#840000&gt;&quot;user32.dll&quot;,&lt;/FONT&gt; &lt;/FONT&gt;CharSet = &lt;FONT color=#49b5d5&gt;CharSet&lt;/FONT&gt;.Auto, &lt;FONT color=#840000&gt;SetLastError&lt;/FONT&gt; = true)]&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#193da9&gt;public static extern int&lt;/FONT&gt; &lt;FONT color=#840000&gt;SystemParametersInfo&lt;/FONT&gt;(&lt;FONT color=#193da9&gt;int &lt;/FONT&gt;uAction, &lt;FONT color=#193da9&gt;int &lt;/FONT&gt;uParam, out &lt;FONT color=#49b5d5&gt;RECT &lt;/FONT&gt;lpvParam, &lt;FONT color=#193da9&gt;int &lt;/FONT&gt;fuWinIni);&lt;/STRONG&gt;&lt;br /&gt;
&lt;/BLOCKQUOTE&gt;&lt;br /&gt;
SystemParametersInfo 함수를 호출하여 작업표시줄의 영역을 뺀 화면의 크기를 얻어 오기 위하여 RECT 구조체가 필요 하기 때문에 아래와 같이 임의로 &lt;STRONG&gt;RECT&lt;/STRONG&gt; 구조체를 정의해 줍니다.&lt;br /&gt;

&lt;BLOCKQUOTE&gt;&lt;STRONG&gt;[&lt;FONT color=#49b5d5&gt;StructLayout&lt;/FONT&gt;(&lt;FONT color=#49b5d5&gt;LayoutKind&lt;/FONT&gt;.Sequential)]&lt;br /&gt;
&lt;FONT color=#193da9&gt;public struct&lt;/FONT&gt; &lt;FONT color=#49b5d5&gt;RECT&lt;/FONT&gt;&lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#193da9&gt;public int &lt;/FONT&gt;left;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#193da9&gt;public int &lt;/FONT&gt;top;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#193da9&gt;public int &lt;/FONT&gt;right;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=#193da9&gt;&amp;nbsp;&amp;nbsp; public int &lt;/FONT&gt;bottom;&lt;br /&gt;
}&lt;/STRONG&gt;&lt;/BLOCKQUOTE&gt;사실 &lt;STRONG&gt;SystemParametersInfo&lt;/STRONG&gt;는 매우 다양한 기능을 수행하는 API입니다. 여러가지 시스템 정보를 설정하거나 가져 올 수 있습니다. 예를들어 바탕화면 이미지를 변경한다던지, 작업영역의 크기를 알아낼 수 도 있고, 화면보호기의 동작 유무를 제어 할 수도 있습니다. &lt;STRONG&gt;인자에 따른 기능이&amp;nbsp;너무 많아서&lt;/STRONG&gt; 좀더 자세한 기능을 알고 싶다면 아래의 링크에서 MSDN 도움말을 확인 하시면 됩니다.&lt;br /&gt;
&lt;A href=&quot;http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx&quot;&gt;&lt;A title=&quot;[http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx]로 이동합니다.&quot; href=&quot;http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx&quot; target=_blank&gt;http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx&lt;/A&gt;&lt;/A&gt;&lt;br /&gt;
&lt;br /&gt;위에 그림에서 보듯이 작업표시줄의 트레이 아이콘 위에 윈도우를 띄우려면(무언가 보여주고 싶다면...) &lt;STRONG&gt;작업표시줄의 영역을 제외한 윈도우의 실질적인 작업영역의 크기&lt;/STRONG&gt;를 얻어오면 됩니다.&lt;br /&gt;
&lt;PRE class=c#:firstline[1] name=&quot;code&quot;&gt;        [DllImport(&quot;user32.dll&quot;, CharSet = CharSet.Auto, SetLastError = true)]
        public static extern int SystemParametersInfo(int uAction, int uParam, out RECT lpvParam, int fuWinIni);

        private void SetFormLocationToTray(Form form)
        {
            int SPI_GETWORKAREA = 0x0030; //작업영역을 알아오는 Flag
            RECT r = new RECT();
            SystemParametersInfo(SPI_GETWORKAREA, 0, out r, 0);
            Size s = form.Size;
            Point p = new Point(r.right - s.Width, r.bottom - s.Height); 
            form.Location = p;
        }
 &lt;/PRE&gt;SetFormLocationToTray 함수는 인자로 들어온 Form 객체의 위치를 Tray 주위로 옮겨 주는 역할을 합니다.&lt;br /&gt;
SystemParametersInfo의 첫번째 인자중 0x0030(SPI_GETWORKAREA)을 넣으면 작업표시중을 뺀 작업영역의 크기를 3번째 인자의 RECT 구조체에 얻어오게 됩니다.&lt;br /&gt;
알아온 작업영역의 크기로 위의 소스에서 보는것 처럼 현재 폼의 크기에 따라 계산을 하여 폼의 location을 변경하여 네이트온처럼 트레이 주위에 윈도우가 뜨게 할 수 있습니다.&lt;br /&gt;</description>
      <category>.NET/Visual C#</category>
      <category>SPI_GETWORKAREA</category>
      <category>SystemParametersInfo</category>
      <category>Tray 윈도우</category>
      <category>알림창</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/47</guid>
      <comments>https://crynut84.tistory.com/47#entry47comment</comments>
      <pubDate>Tue, 7 Jul 2009 23:09:45 +0900</pubDate>
    </item>
    <item>
      <title>.NET 중복 실행 방지</title>
      <link>https://crynut84.tistory.com/46</link>
      <description>안녕하세요? 맨날맑음 입니다.&lt;br /&gt;
&lt;br /&gt;어플리케이션을 개발 하다 보면&lt;STRONG&gt; 같은 프로그램이 두번 실행 되지 않아야 하는 경우&lt;/STRONG&gt;가 종종 생깁니다.&lt;br /&gt;
이를 해결 하기 위해 여러 방법이 있지만.. 이번 포스팅에 소개 할 내용은 커널 동기화 객체 중 하나인 뮤텍스(Mutex)를 이용하여 해결하는 방법을 소개하려 합니다.&lt;br /&gt;
&lt;br /&gt;&lt;STRONG&gt;Mutex&lt;/STRONG&gt;는 .NET의 System.Threding 네이스페이스에 포함된 클래스 입니다. 사실 둘이상의 스레드가 동시에 공유될 수 있는 리소스에 접근 할때 데드락의 위험이 있으므로 동기화 매커니즘이 필요하게 되는데요. Mutex는 리소스에 대한 단독 엑세스 권한을 하나의 스레드에만 부여하여 &lt;STRONG&gt;동기화하는 기본형식&lt;/STRONG&gt; 입니다.&lt;br /&gt;
같은 리소스에 접근 할때 하나의 스레드가 Mutex를 걸고&amp;nbsp;어떠한 일을&amp;nbsp;수행 할 경우 다른 스레드는 먼저 수행하고 있는 스레드가 Mutex를 해제 할때까지 기다리게(일시중지) 되게 됩니다.&lt;br /&gt;
Mutex에 관한 자세한 설명은 아래의 링크에서 MSDN 도움말을 확인 할 수 있습니다.&lt;br /&gt;
&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/system.threading.mutex.mutex.aspx&quot;&gt;http://msdn.microsoft.com/ko-kr/library/system.threading.mutex.mutex.aspx&lt;/A&gt;&lt;br /&gt;
&lt;br /&gt;테스트 하는 어플리케이션으로는 Windows Form 프로젝트를 예로 들겠습니다.&lt;br /&gt;
WinForm 프로젝트를 생성하면 Program.cs 가 생성 됩니다.&lt;br /&gt;
Main 함수에 다음과 같은 코드를 추가 시켜 주면 메세지 막스가 뜨면서 해당하는 프로그램이 중복 실행 되었다는걸 알릴 수 있습니다. 매우 간단하죠?&lt;br /&gt;
&lt;pre name=&quot;code&quot; class=&quot;c#:firstline[1]&quot;&gt;
static class Program
    {
        /// &lt;summary&gt;
        /// 해당 응용 프로그램의 주 진입점입니다.
        /// &lt;/summary&gt;
        [STAThread]
        static void Main()
        {
            bool createdNew;
            Mutex dup = new Mutex(true, &quot;Focus Explorer Mutex&quot;, out createdNew); //Mutex생성
            if (createdNew)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new MainForm());
                dup.ReleaseMutex(); //Mutex 해제
            }
            else // 프로그램이 중복 실행된 경우
            {
                MessageBox.Show(&quot;이미 프로그램이 실행중입니다.&quot;,&quot;Focus Explorer&quot;);
            }
        }
    }
 &lt;/pre&gt;
우선 Mutex를 생성하고, 생성자에 두번째 인자에 뮤텍스 이름을 지정합니다.&lt;br /&gt;
세번째 인자로준 bool 값이 false일 경우 이미 뮤텍스가 걸리있는 상태이기 때문에.. 해당 프로젝트가 이미 생성되었다고 생각하고 프로그램이 실행중이라는 메세지 박스를 띄우고, 프로그램을 종료합니다.&lt;br /&gt;
&lt;br /&gt;이상 간단한 Mutex를 사용한 프로그램 중복 방지 방법이었습니다.</description>
      <category>.NET/Visual C#</category>
      <category>.NET 중복 실행</category>
      <category>mutex</category>
      <category>중복 실행</category>
      <category>프로세서 중복 실행</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/46</guid>
      <comments>https://crynut84.tistory.com/46#entry46comment</comments>
      <pubDate>Tue, 7 Jul 2009 21:30:34 +0900</pubDate>
    </item>
    <item>
      <title>.NET 배포 프로젝트를 만들어 보자.</title>
      <link>https://crynut84.tistory.com/45</link>
      <description>안녕하세요? 맨날맑음 입니다.&lt;br /&gt;
&lt;br /&gt;.NET 으로 프로젝트를 만들고, 배포를 하는 방법은 Click Once같은 방법도 있지만 이번에는&lt;STRONG&gt; Windows Installer 배포&lt;/STRONG&gt;에 대해 알아보겠습니다.&amp;nbsp;기존에 .Net으로 프로젝트 개발만 해보았지, 배포는 신경을 쓰지 않아 잘 모르다가, 이번에 VS2008에서 기본으로 제공되는 배포 프로젝트의 사용법을 알아 보았습니다.&lt;br /&gt;
아래 링크를 따라가면 배포프로젝트에 관한 MSDN 도움말을 보실 수 있습니다.&lt;br /&gt;
&lt;A href=&quot;http://msdn.microsoft.com/ko-kr/library/206sadcd(VS.80).aspx&quot;&gt;http://msdn.microsoft.com/ko-kr/library/206sadcd(VS.80).aspx&lt;/A&gt;&lt;br /&gt;
&lt;br /&gt;우선 배포할 프로그램을 준비합니다. 저는 간단한 윈폼 프로젝트로 하겠습니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1911C21C4A529F9B01&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F1911C21C4A529F9B01&quot; width=&quot;268&quot; height=&quot;171&quot; alt=&quot;&quot; filename=&quot;포맷변환_MainApp.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;br /&gt;
VS2008에서 새 프로젝트를 추가 하고, 기타 프로젝트 형식 -&amp;gt; &lt;STRONG&gt;설치 및 배포&lt;/STRONG&gt; -&amp;gt; &lt;STRONG&gt;설치프로젝트&lt;/STRONG&gt;를 선택합니다.&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/170CC11C4A52A0C21F&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F170CC11C4A52A0C21F&quot; width=&quot;479&quot; height=&quot;309&quot; alt=&quot;&quot; filename=&quot;포맷변환_newProject.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;br /&gt;
다음과 같이 배포 프로젝트가 생성됩니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/20777D1A4A52A1A71E&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F20777D1A4A52A1A71E&quot; width=&quot;448&quot; height=&quot;290&quot; alt=&quot;&quot; filename=&quot;포맷변환_setup1.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;br /&gt;
솔루션 탐색기와 속성 창을 보면 아래와 같이 프로젝트와, 여러 속성이 보이게 됩니다.&lt;br /&gt;
&lt;div class=&quot;imageblock left&quot; style=&quot;float: left; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/197A041A4A52A23013&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F197A041A4A52A23013&quot; width=&quot;253&quot; height=&quot;628&quot; alt=&quot;&quot; filename=&quot;포맷변환_setup2.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
이제 이 속성들의 의미를 하나하나 알아보겠습니다.&lt;br /&gt;
&lt;STRONG&gt;▷AddRemoveProgramIcon&lt;/STRONG&gt; : 제어판 -&amp;gt; 프로그램 추가/제거에 표시될 아이콘을 등록합니다.&lt;br /&gt;
&lt;STRONG&gt;▷Author&lt;/STRONG&gt; : 프로젝트 작성자의 이름을 등록합니다.&lt;br /&gt;
&lt;STRONG&gt;▷Desciption&lt;/STRONG&gt; : 설치 관리자에 관한 설명을 등록합니다.&lt;br /&gt;
&lt;STRONG&gt;▷DetectNewerInstalledVersion&lt;/STRONG&gt; : 프로그램 설치시 버전 비교를 통해 새 버전인지 확인 해 줍니다.&amp;nbsp;이미 설치 되있을 경우 설치 되어있다고 알려주기도 합니다.&lt;br /&gt;
&lt;STRONG&gt;▷Keyword&lt;/STRONG&gt; : 설치 관리자를 검색하는데 사용 할 키워드를 지정합니다.&lt;br /&gt;
&lt;STRONG&gt;▷Localization&lt;/STRONG&gt; : 로케일을 적용한다고 하는데, 글로벌 프로그램이 아니라면 신경 안써도 될 듯 합니다.&lt;br /&gt;
&lt;STRONG&gt;▷Manufacturer&lt;/STRONG&gt; : 제조업체의 이름을 지정합니다&lt;br /&gt;
&lt;STRONG&gt;▷MunufacturerUrl&lt;/STRONG&gt; : 제조업체의 홈페이지 링크를 지정.&lt;br /&gt;
&lt;STRONG&gt;▷PostBuildEvent&lt;/STRONG&gt; : 배포프로젝트를 빌드한 후에 실행 할 명령줄을 지정합니다.&lt;br /&gt;
&lt;STRONG&gt;▷PreBuildEvent&lt;/STRONG&gt; : 배포프로젝트를 빌드하기 전에 실행 할 명령줄을 지정합니다.&lt;br /&gt;
&lt;STRONG&gt;▷ProductCode&lt;/STRONG&gt; : 응용프로그램의 고유 식별자(GUID)를 지정합니다.&lt;br /&gt;
&lt;STRONG&gt;▷ProductName&lt;/STRONG&gt; : 프로그램의 공개 이름을 지정합니다.&lt;br /&gt;
&lt;STRONG&gt;▷RemovePrevionsVersions&lt;/STRONG&gt; : 설치시 이전버전을 삭제 할지를 지정합니다.&lt;br /&gt;
&lt;STRONG&gt;▷RunPostBuildEvent&lt;/STRONG&gt; : PostBuildEvent 속성에서 지정된 명령줄을 실행할 시기를 결정합니다.&lt;br /&gt;
&lt;SPAN class=ui&gt;&lt;STRONG&gt;▷SearchPath&lt;/STRONG&gt; : 개발 컴퓨터의 어셈블리, 파일 또는 병합 모듈을 검색하는 데 사용되는 경로를 지정합니다.&lt;br /&gt;
&lt;STRONG&gt;&lt;SPAN class=ui&gt;▷&lt;/SPAN&gt;Subject&lt;/STRONG&gt; : 프로그램을 설명하는 추가정보를 지정합니다.&lt;br /&gt;
&lt;SPAN class=ui&gt;&lt;STRONG&gt;▷S&lt;/STRONG&gt;&lt;SPAN class=ui&gt;&lt;STRONG&gt;upportPhone&lt;/STRONG&gt; : 전화번호를 지정합니다.&lt;br /&gt;
&lt;SPAN class=ui&gt;&lt;STRONG&gt;▷S&lt;/STRONG&gt;&lt;SPAN class=ui&gt;&lt;STRONG&gt;upportUrl&lt;/STRONG&gt; : 마찬가지로 추가 설명을 하는 웹사이트 주소&lt;br /&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN class=ui&gt;&lt;STRONG&gt;▷&lt;/STRONG&gt;&lt;SPAN class=ui&gt;&lt;STRONG&gt;TargetPlatform&lt;/STRONG&gt; : 프로그램이 실행될 플랫폼을 지정.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
&lt;SPAN class=ui&gt;&lt;STRONG&gt;▷Title&lt;/STRONG&gt; : 설치 관리자의 제목을 지정합니다.&lt;br /&gt;
&lt;SPAN class=ui&gt;&lt;STRONG&gt;▷UpgradeCode&lt;/STRONG&gt; : 프로그램 버전이 여러가지 일때 고유식별자를 지정합니다.&lt;br /&gt;
&lt;SPAN class=ui&gt;&lt;STRONG&gt;▷Virsion&lt;/STRONG&gt; : 버전을 지정합니다.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
속성 참 많네요.. 정작 중요한건 ProductName, Title, Author, MAnufacturer 정도 입니다.&lt;br /&gt;
&lt;br /&gt;이제 &lt;STRONG&gt;파일시스템&lt;/STRONG&gt; 탭으로 이동하여 &lt;STRONG&gt;대상 컴퓨터의 파일 시스템&lt;/STRONG&gt; -&amp;gt;&lt;STRONG&gt; 응용 프로그램 폴더&lt;/STRONG&gt;를 선택한 후 속성창을 확인합니다. &lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/112C951E4A52AC7031&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F112C951E4A52AC7031&quot; width=&quot;494&quot; height=&quot;297&quot; alt=&quot;&quot; filename=&quot;포맷변환_setup3.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;br /&gt;
DefalutLocation이라는 속성에 &lt;STRONG&gt;[ProgramFilesFolder][Manufacturer]\[ProductName]&lt;/STRONG&gt; 라고 되어 있습니다. &lt;STRONG&gt;인스톨시 프로그램이 설치될 폴더&lt;/STRONG&gt; 인데요. 이 설정으로 하게 되면 프로그램파일 폴더 밑에 제조회사명 밑에 프로그램 이름 폴더 안에 깔리게 되겠습니다. 맘에 드는 폴더로 변경 하시면 됩니다.&lt;br /&gt;
&lt;br /&gt;이제 파일을 추가 해 보겠습니다. 응용 프로그램 폴더에서 마우스 오른쪽 버튼을 누르면 파일이나 폴더등을 추가 할 수 있습니다. 미리 만들어 놓은 샘플 어플리케이션을 추가 하겠습니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/2007FB1A4A52AEBE2C&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F2007FB1A4A52AEBE2C&quot; width=&quot;479&quot; height=&quot;257&quot; alt=&quot;&quot; filename=&quot;포맷변환_setup4.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1935771D4A52AF4934&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F1935771D4A52AF4934&quot; width=&quot;452&quot; height=&quot;107&quot; alt=&quot;&quot; filename=&quot;포맷변환_setup5.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;br /&gt;
이렇게 하면 앞서 지정된 설치 폴더에 MainApp.exe가 설치 됩니다. 명색이 인스톨 프로그램인데 이것만 지정하면 안되겠죠? 위에 &lt;STRONG&gt;사용자 바탕화면&lt;/STRONG&gt;과 &lt;STRONG&gt;사용자 프로그램 메뉴&lt;/STRONG&gt;가 보입니다.&lt;br /&gt;
말 그래로 사용자 바탕화면은 바탕화면에 설치 될 파일을 지정 할 수 있고, 사용자 프로그램 메뉴는 [시작]-&amp;gt;[프로그램]의 폴더나 파일을 지정 할 수 있습니다.&lt;br /&gt;
바탕화면과 프로그램 메뉴에 MainApp.exe의 바로가기를 넣어주면 클라이언트가 아주 편리 할 것 같습니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/181FC61C4A52B03336&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F181FC61C4A52B03336&quot; width=&quot;453&quot; height=&quot;212&quot; alt=&quot;&quot; filename=&quot;포맷변환_setup6.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
MainApp.exe를 마우스 오른쪽 버튼으로 클릭하여 바로가기를 만듭니다. 저는 두개를 만들어 이름을 원하는데로 변경한 후 하나는 사용자 바탕화면으로 끌어다 놓았고, 사용자 프로그램 메뉴에는 [새폴더]를 하나 추가 하여, 그 안에 넣었습니다. 그리고 &lt;STRONG&gt;아이콘 파일(.ico)&lt;/STRONG&gt;도 하나 추가하여 바로가기의 속성중 Icon에 연결 시켜 줍니다. 그럼 바로가기가 우리가 지정한 아이콘으로 생성 됩니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/194F001B4A52BE4A43&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F194F001B4A52BE4A43&quot; width=&quot;534&quot; height=&quot;366&quot; alt=&quot;&quot; filename=&quot;포맷변환_setup7.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/204F001B4A52BE4A44&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F204F001B4A52BE4A44&quot; width=&quot;444&quot; height=&quot;366&quot; alt=&quot;&quot; filename=&quot;포맷변환_setup8.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;br /&gt;
이제 &lt;STRONG&gt;언인스톨 기능&lt;/STRONG&gt;을 하는 바로가기도 지원해 주어야 좀 더 있어보일 것입니다. &lt;br /&gt;
바탕화면에서 텍스트문서(txt)를 하나 추가해서 확장자를 bat로 바꾸어 줍니다. 편집기로 파일을 열어 &lt;STRONG&gt;Msiexec /x&amp;nbsp;{ProductCode}&lt;/STRONG&gt; 를 추가 해 줍니다. 여기서 ProductCode는 위에 프로젝트 속성중에 있던 코드 입니다. 지금 예제 대로 하면 Msiexec /x {A1715BBB-A953-4F01-B788-168542ED2BC3} 이 되겠네요.&lt;br /&gt;
&lt;br /&gt;현재 배포하는 샘플 프로그램이 매우 간단하여 파일이 하나이지만, 대부분의 응용은 여러 DLL을 포함하고 있을것입니다. 그리고 각 파일마다 설치하고 싶은 경로가 다를 수 있는데, &lt;STRONG&gt;파일시스템&lt;/STRONG&gt; 탭의 &lt;STRONG&gt;대상 컴퓨터의 파일 시스템&lt;/STRONG&gt;을 오른쪽 버튼으로 누르면 특수폴더 추가에서 원하는 폴더를 추가 할 수 있습니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/1243371C4A52C0C523&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F1243371C4A52C0C523&quot; width=&quot;571&quot; height=&quot;488&quot; alt=&quot;&quot; filename=&quot;포맷변환_setup10.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
&lt;br /&gt;
이제 이 파일을 응용프로그램 폴더에 포함 시켜주고, 마찬가지 방법으로 바로 가기를 만들어서 원하는 곳에 추가 시켜 줍니다. 프로젝트를 다시 빌드 하고&amp;nbsp;테스트 해보겠습니다. 프로젝트 폴더의 Relese 폴더에 들어가니 파일이 두개 보입니다.(Relese모드로 빌드 했을 경우, Debug 모드 일경우 Debug 폴더에 생성)&lt;br /&gt;
Setup.exe를 더블 클릭하니 설치가 잘 됩니다. &lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/181D231A4A52C1D872&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F181D231A4A52C1D872&quot; width=&quot;620&quot; height=&quot;509&quot; alt=&quot;&quot; filename=&quot;포맷변환_setup11.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
설치시 생긴 바로가기 아이콘으로 Uninstall도 잘되는지 확인해 보겠습니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/cfile/tistory/114A711E4A52C2465A&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Ft1.daumcdn.net%2Fcfile%2Ftistory%2F114A711E4A52C2465A&quot; width=&quot;314&quot; height=&quot;143&quot; alt=&quot;&quot; filename=&quot;포맷변환_setup12.jpg&quot; filemime=&quot;image/jpeg&quot;/&gt;&lt;/div&gt;
정상적으로 잘 되는걸 볼 수 있습니다. 쓰다 보니 스크롤의 압박이군요;&lt;br /&gt;
만약 설치 대상컴퓨터(클라이언트)에 .Net Framwork가 없을때 자동으로 설치되게 하는 것 까지 쓰려고 했는데,&lt;br /&gt;
다음편으로 넘겨야 할 것 같습니다. 다음편에는 이같은 기능을 해주는 Boot Strapper에 관해 포스팅 하겠습니다.</description>
      <category>.NET/Visual C#</category>
      <category>.net 배포</category>
      <category>c# 배포</category>
      <category>Windows Installer</category>
      <category>WinForm 배포</category>
      <category>배포 프로젝트</category>
      <category>설치 및 배포</category>
      <author>맨날맑음</author>
      <guid isPermaLink="true">https://crynut84.tistory.com/45</guid>
      <comments>https://crynut84.tistory.com/45#entry45comment</comments>
      <pubDate>Tue, 7 Jul 2009 12:37:43 +0900</pubDate>
    </item>
  </channel>
</rss>