티스토리 뷰

목차

    반응형

    C# 윈폼 예제 3개, 스플래쉬, 스크린락, 스크린샷 (Splash, Screen Lock, Shot)


    C Sharp Form - Splash Form[C# UI 디자인 예제] 스플래쉬 스크린은 실버라이트를 이용한 웹 페이지와는 조금 다릅니다.


    1. Splash Form


    시각적으로도 다르고, 구현 방식도 당연히 다르죠. 스플래쉬 스크린은 주로 응용 프로그램이 로드되는 동안에 사용자에게 지루함(?)을 줄이기 위한 용도 등으로 쓰입니다. 이런 스크린을 구현하기 위해선 그림자, 투명도, 배경 이미지, 투명함의 정도 등에 대한 API 사용이 요구됩니다.


    중요한 API는 UpdateLayeredWindow 입니다.

    매우 유용한 API로서, 그림자를 포함한 배경 이미지 등을 표시할 수 있게 돕습니다. 다른 API들도 호출되는데 소개하자면 아래와 같이 정리할 수 있습니다.


    1
    2
    3
    4
    5
    6
    GetDC
    GetCompatibleDC
    ReleaseDC
    DeleteDC
    SelectObject
    DeleteObjectUpdateLayeredWindow
    cs


    이 API들은 클래스 내부에 소스 코드로 정의되어 삽입되어 있습니다.



    관련 글



    C# 윈폼 스플래쉬 스크린락 스크린샷[C# UI 디자인 예제] 윈도우 폼 프로그래밍


    2. Screen Lock

    프로젝트 ScreenLock.zip


    일단 기본 비밀번호는 "password"입니다.

    3회 만에 비밀번호를 제대로 입력하지 않으면, 입력창이 사라집니다. 그때 F7을 누르면 다시 입력창이 나타납니다. 근데, 그냥 실행시켜도 ALT+F4가 먹혀요.


    두 개의 프로그램이 프로젝트에 삽입되어 있는데, 교체해 가며 실행하는 방법은 간단합니다.


    1
    Application.Run(new "여기에 파일 이름")
    cs


    여기에 삽입된 타이머들은 비밀번호 해제 후 본 화면으로 돌아갈 때,


    1. 어두웠던 화면을 점차 밝게,
    2. 꾸준히 포커스를 텍스트 박스 안으로, 지정해줍니다.


    3. Screen Shot

    프로젝트 WindowsApplication2.zip


    C Sharp Form - Screen Shot[C# UI 디자인 예제] 윈도우 폼 프로그래밍


    간단한 스크린샷 프로그램입니다. 필요한 건 역시, 각 좌표를 Integer 형으로 변환시켜 인식시켜 줄 네임 스페이스입니다.


    1
    System.Runtime.InteropServices
    cs


    그래서, 마찬가지로 좌표 계산을 위한 API를 선언해 줍니다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [DllImport("user32.dll", ExactSpelling = true, SetLastError = true)]
    public static extern IntPtr GetDC(IntPtr hWnd);
     
    [DllImport("user32.dll", ExactSpelling = true)]
    public static extern IntPtr ReleaseDC(IntPtr hWnd, IntPtr hDC);
     
    [DllImport("gdi32.dll", ExactSpelling = true)]
    public static extern IntPtr BitBlt(IntPtr hDestDC, int x, int y, int nWidth,
                   int nHeight, IntPtr hSrcDC, int xSrc, int ySrc, int dwRop);
     
    [DllImport("user32.dll", EntryPoint = "GetDesktopWindow")]
    public static extern IntPtr GetDesktopWindow();
    cs


    그렇게 되면, "ScreenShot" 메소드를 사용해 쉽게 스크린숏 작성이 가능해집니다.


    다만, 전체 스크린숏이지 일부 스크린숏은 아닙니다.


    C# 윈폼 예제 5개, 스플래쉬, 스크린락, 스크린샷, 크기 고정, 페이딩

    반응형