합성 컨트롤(Authoring a Composite Control)은 '유저 커스텀 컨트롤'과는 달리 DLL형태로 만들어wu 재사용이 쉽다는 장점이 있습니다. 예전엔 '유저 제작 컨트롤'같은 이름이였던거 같은데 기능이 바뀐 건지 처음 듣는 이름이네요. 개념상으로는 기존의 컨트롤들을 재조합하여 만들기 때문에 이런 이름을 붙인 것 같습니다. 간만에 그림하나 없는 MSDN의 샘플이 아무런 작업 없이 잘 돌아간 것 같네요 ㅋㅋㅋㅋ 그래서 MSDN의 샘플을 그대로 따라가도록 하겠습니다. (참고 : MSDN - 연습: Visual C#에서 합성 컨트롤 제작) 1. 프로젝트 생성 C# > Windows > Windows Forms 컨트롤 라이브러리 를 선택하고 이름을 'ctlClockLib'으로 한 다음 프로젝트를 ..
'OpenCV'를 사용하는 이유 중에 하나가 웹캠을 이용하기 위해서입니다. 다른 방법도 있습니다만 크로스플랫폼(Cross Platform)을 생각한다면 'OpenCV'를 빼고 가기 힘들죠 ㅎㅎ 'OpenCV'를 닷넷으로 랩핑한 'OpenCVSharp'을 이용하여 웹캠에서 이미지를 받아오겠습니다. 1. 프로젝트 생성 윈폼 프로젝트를 생성합니다. 이전 글을 참고하여 프로젝트에 DLL을 복사합니다. (참고 : [C#.Net, OpenCVSharp] 'opencvsharp'를 이용하여 C#에서 OpenCV 사용하기 - '2.설치하기' 참고) 1-1. 디자이너 폼에 픽처 박스 한 개와 타이머 하나를 추가합니다. pictureBox1 timer1 1-2. 코드 작성 코드는 이전 글과 비슷합니다. 단지 이미지를 불러..
웹캠의 영상처리를 위해 자료를 찾아보니 윈도우에서는 다이렉트쇼(DirectShow)를 이용하더군요. 그런데 모노프로젝트를 이용하여 멀티플랫폼을 구성할 예정이라 다이랙트X(Direct X)는 사용할수 없습니다. 그래서 검색해보니 오픈CV(Open CV)를 모노용으로 만들어 쓰라고 하는군요. 언제나 이런문제는 귀찬기 마련이죠 ㅎㅎㅎ 그리고 다행히 누군가 프로젝트를 진행하고 있습니다. Emgu CV - OpenCV in .NET (C#, VB, C++ and more) opencvsharp - OpenCV wrapper for .NET Framework 저는 'opencvsharp'를 사용하겠습니다. Emgu CV가 유명하고 좋다고는 하는데.... 'opencvsharp'는 한국커뮤니티가 잘되있고 닷넷에 익숙..
왜 그런지는 모르겠지만지만 함수는 '원 리턴(One Return)'이 원칙입니다.(아마도 함수리턴값을 바로 사용하는 기능때문 인것 같네요.) 그래서 여러값을 받고 싶으면 C는 포인터를 이용하고 객체지향언어에서는 클래스(class, 모듈(Model)도 여기에 해당한다.)를 리턴 받는 방법으로 여러값을 받습니다. 언어에 따라 '파라메타 아웃풋(Parameter Output)' 같은 것을 지원 할수도 있습니다. ex> //C#의 경우 public int DataReturn(out string sData) 1. WCF는 객체를 리턴 할수 없다. 문제는 WCF는 객체를 리턴 할수 없습니다. 참고 : MSDN 포럼 - How do I pass a WCF class as a reference parameter? WC..
간만에 웹서비스를 써야 해서 WCF파일을 추가하고 서비스 참조를 했는데..... 어라? 이전과 달리 '[메서드이름]Completed'도 안보이고....뭐지?;;;; 예전에 실버라이트에서 한번 다뤘던 거라 이전 글을 확인해도 모양이 이상합니다;;; (참고 : [Silverlight] 1/4. 한 프로젝트에서 웹서비스 만들기) 1. 테스트 WCF 서비스 만들기 서비스는 간단하게 요청이 들어오면 5초대기를 한 후 받은 값에 문자열을 더해 리턴해주는 형식입니다. [ServiceContract] public interface IUsingAsync { [OperationContract] string GetName(string name); } public class UsingAsync : IUsingAsync { p..
WCF가 예전에 사용하던 방식과 달라 이것저것 테스트하다가 간만에 뜬 에러 크로스 스레드 작업이 잘못되었습니다. 아.... 예전에 WPF에서 한번 소개 하긴 했었습니다만 윈폼에서는 약간 다르죠. (참고 : [WPF] 다른 쓰레드에서 UI쓰레드 접근하기 - Dispatcher.Invoke) 연관글 영역 1. 일반적인 방법 일반적으로 인보크(Invoke)를 사용하려면 델리게이트(Delegate)를 만들어야 합니다. (참고 : MSDN - Control.Invoke 메서드) 일반적인 방법에서는 다음과 같은 순서로 인보크를 사용합니다. 1) 델리게이트 선언 2) 델리게이트에 연결할 함수 생성 3) 델리게이트와 생성한 함수 연결 4) 인보크로 델리게이트 호출 //1) 델리게이트 선언 /// /// 델리게이트 선언..
마이크로 소프트나 다른 회사에서 만든 컴포넌트들을 쓰다 보면 흔히 격는 일 중에 하나가 제공되지 않는 기능이 필요할 때입니다. 보통은 해당 클래스를 상속받는 클래스를 만들거나 별도의 클래스를 만든 후 그 클래스 안에 기존 클래스를 생성하고 새로 만든 클래스에 기능을 추가 하는 방법도 있습니다. 그런데 일관성을 높이려면 A클래스에 속한 기능을 B클래스를 선언해서 사용하는 건 그리 좋은 방법이 아닙니다. 기존에 A클래스를 참조하고 있는 모든 기능을 B클래스로 옮겨야 하기 때문이죠. (안 그러면 어떤 건 A를 참조하고 어떤 건 B를 참조하는 불상사를 많이 보게 됩니다-_-;) 이럴 때 사용하는 것이 확장 메서드(Extension Methods) 입니다. 이름 그대로 남이 만들어 놓은 객체에 내가 원하는 기능을..
클래스 라이브러리에서 리소스 사용하는 게 뭐 힘들다고 이런 포스팅까지 하느냐? 하시는 분이 있을 듯 합니다. 맞습니다. 쉬워요. 문제는 임의로 만든 리소스 파일을 사용할 때 발생합니다. 1. 정상적인 경우 정상적인 경우 그냥 리소스 파일을 생성하고 사용하시면 됩니다. 다른 프로젝트에서 참조하려면 액세스 한정자만 'public'로 바꿔주면 됩니다. 멀티랭귀지를 사용할 때도 똑같이 액세스 한정자만 public으로 바꾸시면 됩니다. (참고 : [.Net] 다국어(멀티랭귀지, Multilanguage) 구현) 2. 정상적이지 않은 경우 그런데 비주얼 스튜디오 버그인지 '액세스 한정자' 메뉴가 활성화되지 않는 경우가 있습니다. 저 같은 경우 다른 프로젝트에서 만든 리소스를 옮겼더니 이런 현상이 있었습니다. 이런 ..
비스타때부터 권한 관련 내용이 강화되면서 '관리자 권한으로 실행'이라는 항목이 생겼습니다. 문제는 이 선택이 사용자의 선택이기 때문에 관리자 권한이 없으면 안 되는 프로그램들은 난감한 상황에 빠졌죠. 그래서 프로그램을 관리자 권한으로만 실행할 수 있도록 해야 합니다. 오른쪽 프로그램은 실행하면 바로 안내 메시지가 출력됩니다. (관리자 권한으로 실행된다는 표시인 방패 모양이 오른쪽 아래에 붙어 있음) 이런걸 UAC(사용자 계정 컨트롤)라고 합니다. 1. 테스트 프로젝트 테스트용 프로젝트를 생성하고 빌드해봅시다. 관리자 권한으로 실행되는 방패 모양이 표시가 없습니다. 2. 권한 파일 생성 프로그램이 관리자 권한으로 실행되게 하기 위해서는 'app.manifest'파일이 필요합니다. 2-1. 직접 생성하는 방..
* .Net 4.0 기준입니다 * 닷넷에서 이메일을 보내는 것은 쉽습니다. 그냥 System.Net.Mail만 유징 해주면 되죠. 1. 디자인 이메일을 보내기 위한 간단한 인터페이스를 만들어 봅시다. 기본적인 이메일 UI죠? ㅎㅎ 2. 코드 작성 일단 'System.Net.Mail'와 'System.Text'를 유징해줍니다. using System.Net.Mail; using System.Text; 이제 'button1'의 클릭 이벤트를 다음과 같이 작성합니다. private void button1_Click(object sender, EventArgs e) { MailMessage mail = new MailMessage(); mail.From = new MailAddress(txtFrom.Text);..