728x90

윈폼 8

WPF, 윈폼] 마우스 커서 위치에 있는 픽셀의 색상값(RGB) 구하는 방법

필요에 의해서 특정 지점에서의 RGB값으로 구성된 색상값을 구하고 싶어서 간단한 유틸리티를 만드는데, 특정 지점에서의 색상값을 구하는 방법을 찾아봤다. MSDN이랑 스택오버플로우를 뒤져보니까 GetPixel이라는 해당 픽셀에서의 색상값을 구하는 윈도우 API가 있다. [DllImport("user32.dll", SetLastError = true)] public static extern IntPtr GetDesktopWindow(); [DllImport("user32.dll", SetLastError = true)] public static extern IntPtr GetWindowDC(IntPtr window); [DllImport("gdi32.dll", SetLastError = true)] publ..

윈폼(Winform)에서 폼보더스타일(FormBorderStyle)이 None일 때, 폼 드래그 구현

윈폼에서 폼보더스타일이 None이면 상단에 있는 제목 표시줄이 사라지면서, 폼을 마우스로 드래그해서 옮길 수 없다. 그렇다고 다른 옵션을 선택하기에는 원하는 디자인을 만들 수 없기 때문에 None 옵션을 유지하면서 마우스 드래그 기능을 추가해야 하는데, 간단하게 해결할 수 있다. MouseDown과 MouseMove 이벤트를 이용해서 드래그 기능을 구현할 수 있다. private void MainForm_MouseDown(object sender, MouseEventArgs e) { mousePoint = new Point(e.X, e.Y); } private void MainForm_MouseMove(object sender, MouseEventArgs e) { if ((e.Button & MouseB..

Visual Studio 2017에서 설치 파일 만드는 방법

프로젝트 릴리즈 버전을 올리려고 하다 보니까 설치 파일이 필요해졌는데, 올릴 방법이 막막했다.다른 게시물들이나 이런 곳에서는 2017 이전의 버전으로 해서 그런지 기본적으로 기타 프로젝트라는 카테고리가 따로 존재해서 Setup Project를 만들 수 있었는데, 2017부터는 아무리 찾아봐도 그런 게 없다. 심지어 설치 시 누락된 건가 싶어 인스톨러를 실행해봤는데, 그건 아니었다. https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2017InstallerProjects Visual Studio 2017에서는 Setup Project를 기본 지원하지 않는다. 다만, 마이크로소프트에서 공식 확장..

[WPF] 다른 스레드에서 UI 스레드 쪽에 접근하기

1. 많은 UI 구성 요소에서 호출 스레드가 필요하므로 해당 스레드는 STA여야 합니다. 2. "다른 스레드가 소유하고 있는 오브젝트에 현재 스레드가 접근할 수 없다"(The calling thread cannot access this object because a different thread owns it.) 최근 윈폼 프로그램을 WPF로 바꾸는 과정에서 주기적으로 창을 호출하는 과정에서 위 오류가 발생했다.윈폼에서는 이런 일이 없었지만 WPF에서는 UI 스레드와 그렇지 않은 스레드로 나누고 있어 이런 오류가 발생한다.이럴 때는 Dispatcher.Invoke를 이용하여 해결해야 한다. Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate..

C#] 리스트뷰(ListView) 컬럼 클릭하여 정렬하기

리스트뷰 요소를 잘 보면 상단에 버튼처럼 클릭이 활성화된 항목들이 존재한다. 간혹 뭔가를 만들다 보면, 이들 항목을 기준으로, 즉 해당 칼럼을 기준으로 아이템들을 정렬해야 하는 경우가 생긴다. 이때 해당 리스트뷰(ListView)의 속성의 이벤트 탭에서 ColumnClick이라는 이벤트를 처리할 메서드를 지정하고 그 메서드에서 클릭된 칼럼을 분류, 그에 따른 정렬을 구현해주면 된다. 아래 그림은 DirectoryCleaner라는 말 그대로 디렉토리를 정리해주는 윈폼 프로그램으로 필자가 개인적으로 만들고 있는 프로그램 중 하나다. 특정 디렉토리에 저장된 파일들, 하위 디렉토리의 파일들까지 모두 탐색한 결과를 리스트뷰에 담아서 보여주고 있다. 이름, 경로, 최종 수정일, 용량에 대한 정보를 리스트 뷰에 저장..

C#] 디렉토리(폴더) 내 파일 조회 프로그램

Delegate 사용 연습을 하려고 간단하게 만들어본 프로그램이다.디렉토리 내 무슨 파일들이 있는지에 대해서 조회하는 프로그램이다.숨김 파일도 검색해내며, 이와 관련하여 FileAttribute와 FileInfo를 사용했다.과거에 만든 프로그램이라서 아이콘은 적용시켜놓은 게 없고, 파일도 없어서 수정도 불가능하다.시간 나면 다시 만들어보겠지만, 별 기능도 없는 것이고 이와 관련된 유사 프로그램을 이미 만들어서 다시 만들어 재배포할 일은 없을 것 같다.

C#] MySQL 사용하기

C#] MySQL 사용하기 필자가 읽고 있는 책에서 그리고 공부하고 있는 사이트에서C#을 이용해서 데이터베이스를 다룰 수 있게끔 해놨는데,그 중에 필자의 눈에 들어왔던 것은 MySQL을 활용하는 것이었다. 이미 필자는 지난 학기 데이터베이스 프로그래밍을 통해서 인터넷 쇼핑몰을 만들어본 경험이 있어서MySQL 쿼리문 활용은 어렵지 않게 할 수 있지만, 이를 C#으로 다룰 수 있다는 것에곧바로 필자가 평소 즐기는 게임인 메이플스토리의 '코어 젬스톤'이라는 것을 획득했을 때마다작성하여 기록하는 일종의 가계부 비슷한 프로그램을 만들었다.(이를 속칭 '젬계부'라 한다...) (디자인이 개판이어도 이해 바란다.. 그냥 실습이 목적이었고, 기껏해야 게임 아이템 획득 수량 기록하는 프로그램이니..) 일단 MySQL 데..

TPWord Ver0.5

영어 공부를 하고 있는 와중에 문득 떠오른 생각이 있다.나는 영어 단어를 앉아서 따로 외우는 걸 좋아하지도 않지만,하루 24시간 중에 절반 가까이(혹은 그 이상)를 컴퓨터 앞에 앉아 있는데,중간중간 비는 시간에(혹은 정신이 혼미해질 때..),팝업이 뜨면서 영단어 뜻을 물어보는 건 어떨까?(물론 그게 크게 도움되진 않겠으나... 형식적으로나마?)그래서 만들기 시작했다. 이게 만들고 나니까 고문 기계가 따로 없다.예를 들어 롤 같은 걸 하고 있을 때 5분마다 이게 뜬다고 생각을 하니,두 가지 선택을 하게 되는데,게임을 꺼버리거나, 욕을 하면서 단어를 그냥 틀려버리거나..아무튼 이름은 거창하게 TPWord지만,'고문기계, 사람 미치게 만드는 단어 암기 프로그램'정도로 보는 게 맞을 것이다. 구현된 기능 : 단..

728x90