원도즈폼에 관련된 기초적인 조각지식

프로그래밍/C# 2008/02/20 01:07

원도즈폼에 관련된 기초적인 조각지식  by Xevious7

최근에 C#을 이용한 윈도우즈 폼 프로그래밍이란 책을 보았습니다.
  말그대로 Windows Form에 관한 여러가지 설명과 팁으로 되어있는 책입니다.
이 책에서는 C# 프로그래밍에 대한것보다는 Form을 잘 활용하는 방법이랄까
그런 용도입니다. 듣기로는 책이 절판되었다고 합니다.
공부한 내용의 정리와 기록및 나중참조용으로 포스트 합니다.

( 아래의 메서드및 속성은 원도우즈폼에 공통적용됩니다. 즉 C++이나 VB에서도
  같습니다. 이후 문구는 다. 로 끝나는 보통체를 사용했습니다. 양해바랍니다.)

모달(modal)및 모달리스폼(modaless)
모달리스  form.Show();
모달 form.ShowDialog();

폼 크기 제한 :
this.MinimumSize = new Size( width, hegiht);  // width와 height로 최소크기를 제한
this.MaximumSize = new Size(int.Maxvalue, height); // int.Maxvalue 는 int형의 최대
// 무제한을 의미함 , 과 height로 최대사이즈를 제한.

투명폼 만들기 : Opacity 속성.

this.Opacity = value;  // value의 범위는 0.0 - 1.0 이며 1.0 은 완전불투명 0.0은 투명이다.
                             // 당연히 반투명이려면 0.5
폼디자인에서 타이머를 하나생성하고 Timer_Tick 이벤트 함수를 이용하여

if(this.Opacity < 1.0) this.Opacity+=0.1;
else this.Opacity = 0.0;
이런씩의 장난도 칠 수 있다.

폼의 모양바꾸기 :
1. TransparencyKey 속성을 이용하여 투명하게 보일 부분을 정하여
폼의 모양을 바꾼다. (이경우 겉으로 보이는 모양이 바뀌는 형태지만
결과는 같고 겉으로 보인다는 장점을 이용할수도 있을것 같다.)
(TransparencyKey 속성은 비디오 드라이버 지원에 따라 달라진다.)

2. Form Region 속성을 변경하여 모양을 바꾼다.
    this.Region = new Region(path);  // 미리정한 path 로 영역을 바꾼다.

그림이 없어서 심심한 포스트가 되는것을 방지하기 위해
아주 자세한 예제를 만들어보았다.

원 모양의 원도위 만들기 예.)
VC# 2005 Express 을 사용하였다.

먼저 메뉴를 통해 새로운 프로젝트를 만든다. File->New Project


새로운 프로젝트를 만들면 기본적으로 Form1 이라는 윈도즈 폼이 생성된 화면을
볼수 있다.

만들어진 Form1 은 기본사이즈가 300,300이다. 이 사이즈는 프로퍼티의 폼 속성의
사이즈를 수정하여 고칠수 있다.
Form1을 더블클릭하여 코드를 작성한다.


코드는 위에서 설명한 Region을 변경하는 함수와 이 함수를 Form1_Load 메서드와
Form1_SizeChanged 이벤트 메서드에 적용시킨다.

public partial class Form1 : Form
  {
       public void SetCircleRegion()
       {
           Rectangle rect = this.ClientRectangle;
           using (GraphicsPath path = new GraphicsPath())
           {
               path.AddEllipse(rect);
               this.Region = new Region(path);
           }
       }

       public Form1()
       {
           InitializeComponent();
       }

       private void Form1_Load(object sender, EventArgs e)
       {
           SetCircleRegion();
       }

       private void Form1_SizeChanged(object sender, EventArgs e)
       {
           SetCircleRegion();
       }
  }
색깔있는 부분이 기본 코드에서 추가된 부분이다.

이벤트 메서드의 원형을 찾아서 코딩하는 방법은 기존의 RAD툴 방식과 동일하다.
VB를 사용한 유저라면 더욱쉽게 적응 할수 있을 것이다.
위의 그림처럼 프로퍼티 창에서 번개모양의 이벤트를 표시하는 아이콘을 클릭하여
가능한 이벤트 리스트를 확인하고 해당 이벤트를 클릭하여 소스작성을 할 수 있다.
위는 SizeChanged 이벤트를 찾아서 가는 부분이다.


F6을 눌러 Build를 한후 F5로 실행해보자. 위와 같은 둥근형태의 폼을 볼수 있다.
다만 원래의 윈도우스타일이 타이틀과 보더가 있는관계로 윗부분에 타이틀의 일부분이
보이는 것을 확인 할 수 있다.

이것은  폼의 속성에서 FormBorderStyle 을 None 으로 고치기만 하면된다.

그러면 작업윈도우의 화면에 윈도우 스타일이 아주 심플한 사각형으로 바뀐다.
고치는 김에 위의 투명도 Opacity 속성을 0.8로 만들어 본다.
private void Form1_Load(object sender, EventArgs e)
       {
           SetCircleRegion();
           this.Opacity = 0.8;
       }

이제 실행해보면 반투명의 깔끔한 원을 볼수 있다.

( PS.
윈도우스타일이 바뀌어서 클릭등이 가능하지 않기 때문에 ALT-F4를 눌러 종료하기 바란다.
이런부분의 처리는 각각의 이벤트(클릭등)에 대해서 프로그래밍 해주면 될 것이다.

PS. 단 1분으면 코딩하고 실행하고 결과볼수 있는 내용인데 기록은 힘들다 =.=
)


top

Trackback Address :: http://www.xevious7.com/trackback/308

Write a comment