VB.NET 2008/VB - 폼(Form)

Windows Forms - 모양 변경

본클라쓰 2011. 4. 10. 09:34

 

Windows Forms의 모양과 동작을 결정할 때 여러 가지 테두리 스타일을 선택할 수 있다.

 

FormBorderStyle 속성을 변경하여 폼의 크기 조정 동작을 제어할 수 있다. FormBorderStyle 설정은 단추 모양과 캡션 표시줄이 표시되는 방식에도 영향을 준다.

 

 

FormBorderStyle 속성에 사용할 수 있는 다음과 같다.

 

- None : 테두리가 없음

- FixedSingle : 고정된 단일 선 테두리

- Fixed3D : 고정된 3차원 테두리

- FixedDialog : 고정된 대화 상자 스타일의 굵은 테두리

- Sizable : 크기를 조정할 수 있는 테두리(기본값)

- FixedToolWindow : 크기를 조정할 수 없는 두구 창 테두리. 사용자가 Alt+Tab을 누를 때 나타나는 작업 표시줄이나 도구 창이 나타나지 않는다.

- SizableToowindow : 크기를 조정할 수 있는 도구 창 테두리. 사용자가 Alt+Tab을 누를 때 나타나는 작업 표시줄이나 창에는 도구 창이 나타나지 않는다.

 

 

 

Windows Forms을 디자인할때 컨트롤의 배경 이미지를 폼 자체에 배치하려는 경우가 있다. 이 때는 BackgroundImage 속성을 속성을 사용한다. 이 때 BackgroundImageLayout 속성을 사용하여 폼에서 이미지의 모양을 제어할 수 있다.

 

 

Widnows Forms에서 최소화 및 초대화 단추를 비활성화하려면 MinimizeBox 또는 MaximizeBox 중 하나를 선택해 false를 선택하면 된다. 설정한 속성에 따라 해당하는 단추는 표시되지만 사용할 수는 없다.

 

 

투명한 Windows Forms를 만들 때는 Opacity 속성을 조정하여 폼을 투명하게 만들 수 있다. 속성 창에서 Opacity 속성을 0.0(완전 투명)과 1.0(완전 불투명) 사이의 값으로 설정한다. Opacity 속성을 0.0(완전 투명) 과 1.0(완전 불투명) 사이의 백분율 값으로 설정한다. Opacity 속성은 Double 값 형식이다.

 

 

사각형이 아닌 폼을 만들 때는 두 단계를 거쳐야 한다. 즉, 해당 모양의 폼을 만드는 단계와 해당 폼을 이동하고 닫을 수 있돌고 해주는 프로그래밍 논리를 코딩하는 단계가 필요하다. 두 번재 단계가 필요한 이유는 사용자 지정 모양을 가진 폼에는 제폼 표시줄이 없고 제목 표시줄에서 기본적으로 제공하는 화면에서의 폼 이동 및 닫기 등의 기능도 없기 때문이다.

 

사각형이 아닌 폼을 만드는 작업은 다음의 세 단계로 이루어진다.

 

1. 폼의 외관으로 사용될 비트맵을 만든다.

2. Windows 응용 프로그램 프로젝트를 만든 다음 제목 표시줄을 제거하고 비트맵을 폼의 배경으로 사용하도록 설정

3. 폼 이동 및 닫기 등 제목 표시줄이 제공하는 기능을 다시 만드는 코드를 입력한다.

 

 

폼을 이동하는 코드를 작성하려면 폼을 끌면 폼을 이동하는 프로시저를 만든다.

 

Private mouseOffset As Point

Private isMouseDown As Boolean = Fasle

 

폼의 MouseDown 이벤트에 대한 이벤트 처리기를 만든다. 사용자가 폼의 아무 위치나 클릭하여 끌 수 있도록 하는 코드를 처리기에 추가한다.

 

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseDown

 

    Dim xOffset As Integer

    Dim yOffset As Integer

 

    If e.Button = MouseButtons.Left Then

        xOffset = -e.X - SystemInformation.FrmaBorderSize.Width

        yOffset = -e.Y - systemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height

        mouseOffset = New Point(xOffset, yOffset)

        isMouseDown = True

    End If

 

End Sub

 

 

MouseMove 이벤트에 대한 이벤트 처리기를 만든다.

 

Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles MyBase.MouseMove

 

    If isMouseDown Then

        Dim mousePose As Point = Control.MousePosition

        mousePos.OffSet(mouseOffset.X, mouseOffset.Y)

        Location = mousePos

    End If

 

End Sub

 

 

MouseUp 이벤트에 대한 이벤트 처리기를 만든다.

 

Private Sub Form1_MouseUp(ByVal sender As ObjectByVal e As MouseEventArgs) Handles MyBase.MouseUp


    ' Changes the isMouseDown field so that the form does
    ' not move unless the user is pressing the left mouse button.
    If e.Button = MouseButtons.Left Then
        isMouseDown = False
    End If

End Sub

 

 

 

Windows Forms을 숨기기 위해서는 해당 응용 프로그램의 시작 논리를 별도의 클래스로 옮겨야 한다. 이 작업은 Visible 속성을 false로 설정하는 것처럼 간단하게 수행할 수 있는 작업이 아니다.

 

사용자가 응용 프로그램 시작에 사용된 클래스를 '닫으면' 응용 프로그램이 종료되기 때문에 응용 프로그램의 수명을 폼의 수명으로부터 분리해야 폼을 표시하거나 숨길 수 있다.

 

폼이 처음부터 표시되지 않도록 설정하려면

 

모듈 추가를 선택하여 Windows 기반 응용 프로그램에 모듈을 추가한다. 프로젝트 시작 개체 역할을 할 수 있는 Main 서브루틴을 모듈이나 클래스에서 만든다.

 

Sub Main()


    ' Instantiate a new instance of Form1.
    Dim f1 as New Form1()

    ' Show the instance of the form modally.
    f1.ShowDialog()


End Sub

 

 

프로젝트의 시작 개체를 Form1 대신 Sub Main으로 변경한다.

 

 

 

Windows Forms의 화면 위치를 설정할 때는 Location 속성을 사용한다.

 

Location 속성 값을 입력하여 컴퓨터 화면에서 폼이 표시되는 위치를 지정할 수 있다. 이 속성은 폼의 왼쪽 위 모퉁이 위치를 픽셀 단위로 지정한다. 도한 표시 영역의 경계를 나타내려면 StartPosition 속성을 설정해야 한다.