블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
01.C#기초 (4)
02.C#고급 (13)
03.ASP.NET (28)
04.HTML&Script (17)
05.Silverlight (38)
06.C 언어 기초 (2)
07.iOS (14)
08.Java (5)
09.SQL (8)
10.컴퓨터보안 (10)
11.패턴이야기 (3)
12.유니티3D (1)
13.Ubuntu (7)
14.Node.js (6)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday

'프로그래밍/02.C#고급'에 해당되는 글 13건

  1. 2011.10.25 QR 코드 생성기
  2. 2011.10.24 .dll 동적 로드(Dynamic load)
  3. 2011.10.12 [Tip] 윈폼(Windows Form) 디자인모드 확인방법 2



 예전에 아이폰 앱기능 중 QR Code Reader를 개발하면서, 찾게된 QR Code 생성해 주는 오픈소스 C# 라이브러리(Library)가 있어 소개 하려 한다. 이를 이용하면 손쉽게 QR 코드를 생성 할수 있다.

라이브러리 소스는 아래 링크를 클릭해서 넘어가 다운로드 소스하면 될 것이다.
Open Source QRCode Library

 이 라이브러리는 .NET 2.0 윈도우 응용프로그램, ASP.NET, 윈도우 모바일 장치에서 사용할 수 있다고 한다. 여러므로 유용한 라이브러리 같다!! 난 이 라이브러리를 이용하여 간단하게 명함타입의 QR코드를 생성해주는 윈도우 응용프로그램를 만들어 보았다. 그럼 사용방법에 대해서 내가 만든 응용프로그램을 기준으로해서 알아 보겠다. 


 먼저 라이브러리 소스를 다운로드 받는다. 이 소스안에 샘플 코드가 있으므로, 그 걸로 명함 타입의 QR Code를 만들어도 된다. 아래 그림은 샘플소스에 들어 있는 응용 프로그램의 모습이다.
 


Data라는 영역에 명합타입의 포맷으로 내용을 넣어 주면 되는 것이다. 해당 포맷은 아래와 같다.

 MECARD:N:Your Name;TEL:555555555;URL:www.yoursite.com;EMAIL:your_email@yoursite.com;ADR:21 Jump Street, Hollywood, CA 90027;NOTE:Some text about something;;

MECARD로해서 이름, 연락처, 홈페이지 주소, 이메일 주소, 오프라인 주소, 메모 식으로 내용을 입력해서 만들면 된다.
MECARD에 대한 자세한 사항은 아래 링크를 참고하기 바란다. 각각의 프로퍼티(Property)에 대해서 잘 설명이 되어 있다.
(http://www.nttdocomo.co.jp/english/service/imode/make/content/barcode/function/application/addressbook/index.html)

나는 좀더 명확하게 정보를 입력할 수 있도록 아래와 같이 디자인을 변경해 보았다.


기능은 똑같고, UI만 좀더 직관적으로 변경한 것 이다. 내가 만든 샘플 프로젝트도 MECARD포맷으로 변경하도록 한다. 그런데, 이 라이브러리에는 약간의 문제가 있다. 그게 무엇인가하니, 한글 입력을 하면 문제가 생기는 것이다. 이를 수정해야 하는데, 아래 코드 처럼 인코딩을 변경해 주면 된다.



 위 소스코드는 QRCodeEncoder.cs파일에 있다. 검색을 해보면 나올 것 이다. 이렇게 수정하면 한글에 대한 문제는 없을 것이다. 그럼 내가 만들 샘플 코드에서 "QRCode생성" 버튼 클릭을 하면 어떠한 처리가 되는지 살펴보자!! (UI는 윈폼 컨트롤들을 배치해서 넣은 것이므로 설명은 생략한다.)



 위 코드에서도 볼 수 있듯 StringBuilder를 통해서 MECARD포맷을 만들고 있는 것을 볼 수 있을 것이다. 그리고 QRCodeEncoder의 인스턴스를 생성해서 인코딩 세팅, 이미지 사이즈 세팅, 버전 세팅, 에러 보정 레벨 세팅 등을 해서 이미지로 반환해 주는 것을 볼 수 있을 것이다. 이 처럼 정말 사용하기 쉽게해 놨다.

QR코드 버전관련과 에러 보정 레벨에 대한 자세한 내용은 아래 링크들를 확인하면 정말 많은 도움이 될 것이다. QR Code의 좀더 자세한 내용을 알고 싶으면 아래 링크를 참고 하기 바란다. 

- QR Code.com
- QR Code.com 버전 결정
- Wikipedia - QR Code

웹사이트에서 QR Code를 생성해 주는 서비스도 있다.

- http://qrcode.kaywa.com/
- http://www.scany.net/kr/generator/generator.php

내가 만든 샘플 프로젝트소스와 실행파일 두개를 첨부해 두었으니, 필요하면 다운받으면 될 것 이다.


 




위 그림은 실행 모습입니다. 이 QR코드를 네이버앱에 QR리더기로 읽으면 아래와 같이 잘 읽어 질 것이다.

Posted by happydong
, |




 정말 오랜만에 윈폼(WinForm)프로젝트를 진행을 했다. 프로젝트 컨셉상 .dll 동적 로드(Dynamic load)해서 사용하기로 했다. .dll로드는 여러므로 사용될 수 있으므로, 간단하게 정리하려 한다.
 .dll 동적로드는 간단히 설명하면, 프로젝트에 참조하는 .dll이 아니라 외부에서 dll를 받아 동적으로 로드해 사용하고자하는 인스턴스(Instance)를 생성해 사용할수 있는 것을 말하는데, 이름에서 예상했듯이 그냥 예상한 그대로이다.



위 소스에 대한 설명은 따로 할 필요가 없을 듯 하다. 주석에 잘 쓰여 있으니 말이다. 그리고 GetAssemblyPath 메소드에 대한 내용을 다루지 않은 것은 그냥 파일 경로를 반환해주는 역활만 하는 것이므로, 따로 적어 두지 않았다. 그러나 샘플 프로젝트를 첨부했으니 이를 확인하면 될 것이다.

첨부 프로젝트의 컨셉은 아래 그림과 같다.



(주의: 빌드 전에 확인 해야할 사항이 있는데, happydong.DLLLoader 프로젝트 안에 DLLPaths.resx파일이 있을 것이다. 그 곳에 .dll 경로가 지정되어 있는데, 이 곳을 실제 .dll 경로로 적절히 수정해서 빌드하면 될 것이다. 지금은 F드라이브로 되어 있는데, 적절히 수정해야 한다. )
Posted by happydong
, |



몇일 전에 같이 일하는 분이 우리가 진행중인 프로그램에 UserControl부분을 개발하고 있었다. 그런데 그분이 코드에서 빌드는 잘되고, 에러는 없는데, 폼(Form) 디자인 모드에서 자신이 만들 컨트롤을 드래그해서 넣으면 에러가 난다는 것이었다. 빌드를 해도 이상이 없고, 내가 코드를 보니 특별히 이상한 부분은 없었다. 허나, 생성자 부분에서 특정 XML을 로드하는 로직이 들어 있었다. 알고 보니, 이 부분때문에 폼에서 해당 컨트롤을 넣으면 문제가 되는 것이었다. 폼 디자인모드에서 파일을 읽어 오거나 할수 없기때문에, 당연히 에러가 나는게 맞다!! 그럼 이런 문제를 해결할 방법은 있는가? 있다!! 아래 소스와 같이 구분해주면 된다.

         public Main()
        {
            InitializeComponent();

            // 디자인 모드인지 확인하는 내용입니다.
            if (System.Diagnostics.Process.GetCurrentProcess().ProcessName == "devenv")
            {
                System.Diagnostics.Debug.WriteLine("DesignMode");
            }
        }


이상 윈폼 디자인모드 확인하는 방법 이었다!!
Posted by happydong
, |