[C# Winform 예제] ScreenSaver 스크린세이버 만들기
스크린세이버프로그램다운
예제를 그냥 따라만 해서 인지 코드가 이해가 잘 안간다..
디버거 실행해서 확인하고 싶은데.. 화면이 꽉차저서 확인하기도 힘들다.
학습하기 어려운 예제인가 아님 내가 멍청한가
일단 사용할 Field 들을 선언 한다.

Form1 이 로드 되면 실행될 Method가 담긴 Eventhandler 를 간단히 Form1 > Property> Load 나
Form1 을 더블 클릭해서 생성한다 .
커서를 사라지게 하는 Cursor.Hide(); 가 있고
아직 선언하지 않은 ShowScreenSaver();
Method가 있다.
여기서 좀 햇갈리고 이해 안된다 ..
Rectangle fullScreen = Screen.PrimaryScreen.Bounds;
Rectangle 클래스 를 fullScreen 이란 이름으로 선언뒤에
Screen 에 PrimaryScreen 에 Bounds Method 실행값을 저장한다.
미리선언해둔 screenWidth = fullScreen.Width;
screenHeight = fullScreen.Height;
this.pbImg.Location = new Point(Convert.ToInt32(fullScreen.Width/ 2 - 200),
(Convert.ToInt32(fullScreen.Height / 2 - 250));
pbImg 는 picturebox 이름 이다.
pbImg 에 Location 는
new Point 생성(Convert.Toint32 로 바꾼 (fullScreen에 Width 를 2로 나누고 200뺀 값),
(Convert.Toint32 로 바꾼 (fullScreen에 Height 를 2로 나누고 250을 뺀 값))
새롭게 생성한 Point (x,y) 좌표를 pbImg.Location 에 저장.
StopScreenSaver() Method 에서는
Cursor.Show(); // 커서 살리고
Timer.Enabled = false; // 타이머 꺼버리고
Application.Exit(); // 어플 닫아버리고 끝냄
Timer_Tick () 는 Timer toolbox에서 더블클릭한것을 Design 뷰에서 또 더블 클릭하면
코드 자동 생성되니 그안에다가 코드 남발하면 됨
this.lblTitle.Location = new Point(this.screenWidth - marqueeLocation, 10);
미리 만들어 놓은 lblTitle 이란 라벨을 Location 에 new Point x, 10 을 저장하는데 x 가 this. screenWidth - marqueeLocation 을 한것이야......
this.lblTitle.visible = true ; // 로 라벨 lblTitle 을 보이게 하고
marqueeLocation += 2 // marqueeLocation = marqueeLocation + 2 2씩 계속 추가
이렇게 되면 this.lblTitle.Location 이 왼쪽으로 2 씩 이동하것지 1초마다
if (this.lblTitle.Location .x <= - this.lblTitle.Width)
만약~ 라벨 lblTitle 에 Location 에 x 가 라벨 lblTitle.Width 즉 그 라벨의 음수가로값이랑 같거나 더 작을경우
marqueeLocation = 0;
marqueeLocation 을 0 으로 초기화 ~
애는 쫌있다가....
머리 아픔...
예제를 그냥 따라만 해서 인지 코드가 이해가 잘 안간다..
디버거 실행해서 확인하고 싶은데.. 화면이 꽉차저서 확인하기도 힘들다.
학습하기 어려운 예제인가 아님 내가 멍청한가
일단 사용할 Field 들을 선언 한다.

Form1 이 로드 되면 실행될 Method가 담긴 Eventhandler 를 간단히 Form1 > Property> Load 나
Form1 을 더블 클릭해서 생성한다 .
커서를 사라지게 하는 Cursor.Hide(); 가 있고
아직 선언하지 않은 ShowScreenSaver();
Method가 있다.
여기서 좀 햇갈리고 이해 안된다 ..
Rectangle fullScreen = Screen.PrimaryScreen.Bounds;
Rectangle 클래스 를 fullScreen 이란 이름으로 선언뒤에
Screen 에 PrimaryScreen 에 Bounds Method 실행값을 저장한다.
미리선언해둔 screenWidth = fullScreen.Width;
screenHeight = fullScreen.Height;
this.pbImg.Location = new Point(Convert.ToInt32(fullScreen.Width/ 2 - 200),
(Convert.ToInt32(fullScreen.Height / 2 - 250));
pbImg 는 picturebox 이름 이다.
pbImg 에 Location 는
new Point 생성(Convert.Toint32 로 바꾼 (fullScreen에 Width 를 2로 나누고 200뺀 값),
(Convert.Toint32 로 바꾼 (fullScreen에 Height 를 2로 나누고 250을 뺀 값))
새롭게 생성한 Point (x,y) 좌표를 pbImg.Location 에 저장.
StopScreenSaver() Method 에서는
Cursor.Show(); // 커서 살리고
Timer.Enabled = false; // 타이머 꺼버리고
Application.Exit(); // 어플 닫아버리고 끝냄
Timer_Tick () 는 Timer toolbox에서 더블클릭한것을 Design 뷰에서 또 더블 클릭하면
코드 자동 생성되니 그안에다가 코드 남발하면 됨
this.lblTitle.Location = new Point(this.screenWidth - marqueeLocation, 10);
미리 만들어 놓은 lblTitle 이란 라벨을 Location 에 new Point x, 10 을 저장하는데 x 가 this. screenWidth - marqueeLocation 을 한것이야......
this.lblTitle.visible = true ; // 로 라벨 lblTitle 을 보이게 하고
marqueeLocation += 2 // marqueeLocation = marqueeLocation + 2 2씩 계속 추가
이렇게 되면 this.lblTitle.Location 이 왼쪽으로 2 씩 이동하것지 1초마다
if (this.lblTitle.Location .x <= - this.lblTitle.Width)
만약~ 라벨 lblTitle 에 Location 에 x 가 라벨 lblTitle.Width 즉 그 라벨의 음수가로값이랑 같거나 더 작을경우
marqueeLocation = 0;
marqueeLocation 을 0 으로 초기화 ~
애는 쫌있다가....
머리 아픔...
댓글
댓글 쓰기