본문 바로가기
C# 이미지리스트 화질 해결 (8비트 -> 24비트, ImageList 사용) C# 이미지리스트 화질 해결 (8비트 -> 24비트, ImageList 사용) ImageList 사용하다 보면, 바로 아래 그림처럼 화질이 떨어져 보일 때가 있습니다. C# ImageList는 별도의 옵션이 없으면 불러올 이미지를 8비트로 보여줍니다. 이미지리스트 단점이네요. 그래서 아래처럼 화질이 떨어져 보이죠. 흑백 이미지 등이야 상관없으나, 그 이상의 화질이 필요하다면 기본값을 변경해야 합니다. 아래의 C# 코드처럼 ColorDepth 옵션을 Depth24Bit로 변경하면 됩니다. 12345678910111213using System; public class Class1{ public Class1() { ImageList ilYearCalendar.ImageSize = new Size(216, 41.. 2017. 5. 31.
시리얼 통신 개요, 구현, 포트 버퍼 설정 (C# SERIAL) 시리얼 통신 개요, 구현, 포트 버퍼 설정 (C# SERIAL) 시리얼 통신 개요시리얼은 거의 모든 PC에서 표준으로 사용되는 디바이스 통신 프로토콜이다. 시리얼의 개념을 USB의 개념과 잘 구분해야 한다. 대부분 컴퓨터에는 2개의 RS232 기반 시리얼 포트가 있다. 시리얼은 또한 여러 가지 디바이스에서 계측을 위한 일반 통신 프로토콜이며, 여러 GPIB 호환 디바이스에는 RS232 포트가 장착되어 있다. 그뿐만 아니라, 원격 샘플링 디바이스로 데이터 수집을 하는 경우에도 시리얼 통신을 사용할 수 있다(IEEE 참조). 시리얼 통신의 개념시리얼 포트는 정보의 바이트를 한 번에 한 비트씩 순차적으로 송수신한다. 한 번에 전체 바이트를 동시에 전달하는 병렬 통신과 비교하면 시리얼 통신은 속도가 느리지만, .. 2017. 5. 12.
C# 파일과 폴더, 드래그 앤 드롭 예제 (마우스 Drag Listview) C# 파일과 폴더 정보, 드래그 앤 드롭 예제 (마우스 Drag Listview) 전체 프로젝트는 바로 아래에 있는 zip 파일을 참조하시면 됩니다. 여기에 파일을 올려보세요 아래에 마우스로 파일을 올려놓으면 파일 정보가 나오고,여기에 폴더를 올려보세요 아래에 마우스로 폴더를 올려놓으면 폴더의 정보가 나옵니다. C# 드래그 앤 드롭 프로젝트 - Csharp_DragAndDrop.zip [클릭] 우선, using System.ComponentModel;을 추가하여 DataFormats 클래스를 사용할 수 있도록 설정합니다. - txtFileDrop_DragDrop 함수 : 파일 정보 추출 후 텍스트로 표시- lDirDrop_DragDrop 함수 : 폴더 정보 추출 후 파일 내역 텍스트로 표시 1234567.. 2017. 5. 7.
C# Form fade effect, 페이딩 (그라데이션) 윈폼 예제 C# Form fade effect, 페이딩 (그라데이션) 윈폼 예제 C# Form fade 프로젝트 - WindowsApplication5.zip [클릭] 일단 프로젝트를 다운 받아 실행하면 위와 같이 멋없는 윈도우 폼이 하나 뜹니다. 근데, 이미 페이딩 효과(그라데이션?)가 적용된 것으로 아래 gif처럼 마우스를 갖다 대면 윈폼 색상이 변해요. 『gif 캡처 프로그램』이 마우스 커서까지 녹화하지 못해서 그런데, 화면이 밝아지는 건 마우스 커서가 닿았기 때문입니다. 이런 효과를 윈도우 폼에 추가할 소스가 아래에 있습니다. C# Windows Form Fade페이딩 폼을 만드는 그 자체는 어렵지 않습니다. 제대로 구조화하여 프로그래밍하는 것이 중요합니다. 실제로 프로그램 소스 상에서는 폼의 불투명도를 단.. 2017. 5. 6.
C# 다이얼로그 크기 고정, 윈폼 WinForm 사이즈 변경 막기 C# WinForm 예제, 다이얼로그 크기 고정 소스 WinForm 예제 프로젝트 - AspectRatioForm.zip [클릭] 이 다이얼로그는 아주 약간의 공식만 습득한다면 쉽게 구현할 수 있습니다. 프로그램의 윈폼이 일정한 비율로 늘거나, 준다면 다양한 응용 프로그램에서 유용하게 사용할 수 있습니다. 화면의 비율은 어떤 폼의 높이와 관련이 있지만, 일정한 비율로 폼을 유지하려면 폭, 높이가 조정되는 경우를 모두 염두에 두어야 합니다. 즉, 높이가 줄면 너비도 줄고, 너비가 줄면 높이도 줄어야 합니다. 반대의 경우도 마찬가지죠. 코딩에 반영할 공식은 아주 간단합니다. 따라서, 사용자가 생성할 프로그램 윈폼의 공식을 정리해 보면 아래와 같습니다. Width = (ratio width * From hei.. 2017. 5. 5.
C# 윈폼 예제, 스크린 캡쳐 소스 (화면 ScreenShot) C# 윈폼 예제, 스크린 캡쳐 소스 (화면 ScreenShot) 스크린 캡쳐 (ScreenShot) 프로젝트 - WindowsApplication2.zip [클릭] 간단한 C# 윈폼 스크린샷 프로그램입니다. 필요한 건 역시, 각 좌표를 Integer 형으로 변환시켜 인식시켜 줄 네임 스페이스입니다. 1System.Runtime.InteropServicescs 그리고 스크린 캡쳐를 위한 좌표 계산 API를 선언합니다. 123456789101112[DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]public static extern IntPtr GetDC(IntPtr hWnd); [DllImport("user32.dll", ExactSp.. 2017. 5. 4.
[스크린락] C# 윈도우폼 디자인 예제, ScreenLock 다이얼로그 [스크린락] C# 윈도우폼 디자인 예제, ScreenLock 다이얼로그 윈도우폼 예제 프로젝트 - ScreenLock.zip [클릭] 다이얼로그 기본 비밀번호는 "password"입니다. 3회 만에 비밀번호를 제대로 입력하지 않으면, 입력창이 사라집니다. 그때 C# 다이얼로그에서 F7을 누르면 다시 입력창이 나타납니다. 근데, 그냥 실행시켜도 ALT+F4가 먹혀요. 두 개의 프로그램이 프로젝트에 삽입되어 있는데, 교체해 가며 실행하는 방법은 간단합니다. 1Application.Run(new "여기에 파일 이름")cs 여기에 삽입된 C# 타이머들은 비밀번호 해제 후 본 화면으로 돌아갈 때, 1. 어두웠던 화면을 점차 밝게,2. 꾸준히 포커스를 텍스트 박스 안으로, 지정해줍니다. 아래 코드는 패스워드를 입력.. 2017. 5. 3.
C# 스플래시 윈폼 구현 (대기 시간 지루하지 않은 다이얼로그) C# 스플래시 윈폼 구현 (대기 시간 지루하지 않은 다이얼로그) 프로젝트 - C_sharp_SplashScreen.zip [클릭]실행파일 - SplashScreen.zip [클릭] WinForm 스플래시 스크린은 실버라이트를 이용한 웹 페이지와는 조금 다릅니다. 시각적으로도 다르고, 구현 방식도 당연히 다르죠. 스플래시 스크린은 주로 응용 프로그램이 로드되는 동안에 사용자에게 지루함(?)을 줄이기 위한 용도 등으로 쓰입니다. 예를 들어, 어떤 프로그램을 실행할 때, 프로그램 로딩이 끝나기 전 GIF 이미지가 실행되는 건 아시죠? 그와 유사한 프로그램이라고 할 수 있습니다. 이런 C# 윈폼 스크린을 구현하기 위해선 그림자, 투명도, 배경 이미지, 투명함의 정도 등에 대한 API 사용이 요구됩니다.가장 중요.. 2017. 5. 2.
C# 안드로이드 연동, TCP 통신 소켓 예제 소스 C# 안드로이드 연동, TCP 통신 소켓 예제 소스 안드로이드 소스 - TCP.java C# 프로젝트 - tcpchating-febris.zip C# 안드로이드 연동 소스는 처음부터 제가 만들진 않고, 웹 서핑을 통해 얻은 소스를 수정해봤습니다. (소스는 첨부 자료 참조) C# 소스는 원래 내일도 맑음[클릭]이란 네이버 블로그에서 인용했고, 안드로이드 소스는 기억이 안나요 ㅡㅡ;; 일단 C#을 실행해 보면, 이런 화면이 나옵니다. 이때, 안드로이드에서 메시지를 전송해 보겠습니다. Test C#이란 메세지를 전송합니다. 꽤 간단한 C# 폼에선 메시지를 수신하고 "OK"란 응답 메시지를 송신합니다. C# 안드로이드 TCP 연동이 된겁니다. 현재로선 경고문이 많이 나오는데, Try - Catch문에서 메시지 .. 2017. 4. 18.
C# 스택 예제, Stack 클래스와 Push 등 사용법 C# 스택 예제, Stack 클래스와 Push 등 사용법 Stack. 스택은 LIFO 콜렉션이며 강력한 후입선출(last-in-first-out) 데이터 구조체입니다. 더욱 빠른 파서와 재귀 알고리즘 구현에도 도움이 됩니다. Push. 원소(element)를 넣어 사용한다는 의미로, 컴퓨터 사이언스 측면에선 상단에 추가한다는 뜻입니다. (add to the top) 다음 예제의 함수는 스택에 쌓인 integers를 리턴합니다. using System; using System.Collections.Generic; class Program { static Stack GetStack() { Stack stack = new Stack(); stack.Push(100); stack.Push(1000); stack.. 2017. 4. 15.
C# Sealed 클래스, 성능 향상 최적화 방법 (추상 키워드 예제) C# Sealed 클래스, 성능 향상 최적화 방법 (추상 키워드 예제) Sealed. Sealed 클래스는 상속되지 않으며, 키워드로 사용한다면 함수 호출 시 성능 향상이 됩니다. 1. 상속되지 않는 특성2. 특정 상황에서 성능이 향상 이 두 가지 특징을 갖는 키워드라 할 수 있습니다. Example. sealed 키워드가 적용되면 C# 컴파일러는 당신의 클래스 어셈블리에 "sealed" 메타 데이터를 적용시킵니다. 상위 클래스에선 sealed 키워드가 선언된 클래스를 상속 받을수 없도록 제한합니다. (syntax hint) Tip: JIT 컴파일러는 sealed 메타 데이터를 이용해 함수 호출을 최적화할 수 있습니다. The two classes. ITest 인터페이스를 구현하는 두 클래스엔 약간의 차.. 2017. 4. 14.
C# Dictionary 복사 예제, 딕셔너리 class copy 사용법 Dictionary 복사. C# Dictionary에는 복사 생성자가 있습니다. 기존 딕셔너리 객체를 생성자로 넘기면 그대로 복사가 되는데, 현재로썬 가장 효율적인 방법입니다. 그리고 기존 딕셔너리를 수정해도 복사된 데이터엔 영향을 주지 않습니다. 예제. 간단한 반복문을 구현하여 C# Dictionary 아이템을 직접 복사할 경우엔 코드 중복 및 예상치 못한 에러가 발생할 수 있습니다. 반복문 자체가 비효율적이란 것이죠. Here: 아래 예제에선 복사 생성자를 사용해 딕셔너리 내부 데이터를 복사합니다. using System;using System.Collections.Generic; class Program{ static void Main() { // // Create and initialize Dic.. 2017. 4. 6.