태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Windows Mobile 예제 [11] - 배경화면 만들기 & 글씨 그리기Windows Mobile 예제 [11] - 배경화면 만들기 & 글씨 그리기

Posted at 2009/05/26 12:46 | Posted in Windows Mobile/Windows Mobile 예제



개발환경
Visual Studio 2008
C#




이번 시간에는 어플리케이션의 배경 화면을 만들어 보겠습니다.



어플리케이션의 배경화면 뿐만 아니라
로딩시 또는 메뉴 구성 화면에서 이용하면 좀더 완성도 높은 느낌을 주게 됩니다.


우선 배경화면으로 사용할 이미지를 포토샵 등으로 만듭니다.
시간이 없는 분들은 아래 이미지를 사용해도 무방 합니다.





Visual Studio 로 돌아와서 [추가] -> [기존항목] 으로 이미지 파일을 추가한뒤
이미지파일의 속성창에서 출력 디렉토리복사 를 [항상복사] 로 지정해 줍니다.




소스를 작성 합니다.

OnPaintBackground 메소드를 재정의 하여
기기의 화면 크기에 맞게 출력하도록 합니다.

        
        Bitmap Back;
        Rectangle Background;

        protected override void OnPaintBackground(PaintEventArgs e)
        {
        
            Graphics g = e.Graphics;

            g.DrawImage(Back, this.ClientRectangle, Background, GraphicsUnit.Pixel);
           
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //파일 경로는 보통 \Program Files\어플리케이션명\ 입니다
            Back = new Bitmap(@"\Program Files\background\back.jpg");
            Background = new Rectangle(0, 0, Back.Width, Back.Height);
        }



이번엔 글씨를 그려보겠습니다.

컨트롤을 이용하여 텍스트를 표시하는것과는 달리 배경화면과 어울리게 표시 할 수 있습니다.

Font Brush 객체를 이용해 폰트와 색을 지정하고
Graphics.DrawString 로  그리게 됩니다.

      protected override void OnPaint(PaintEventArgs e)
        {
            string s = "배경 화면 테스트 & 글씨 그리기";

            int fontsize = 10;
 
                using (Font font = new Font("Arial", fontsize, FontStyle.Regular))
                {
                    using(SolidBrush brush = new SolidBrush(Color.Red))
                    {             
                       e.Graphics.DrawString(s, font, brush, 50, 200);
                   }
                }
                
        }





테스트해보겠습니다.

화면에 꽉차게 배경이미지가 들어가고
그위에 텍스트가 표시되는걸 확인 할 수 있습니다.





저작자 표시 비영리 동일 조건 변경 허락
Creative Commons License


  1. 질문자
    에뮬실행시키고 이미지 파일 파일경로 불러오는데서 오류가는데...

    경로문제인것같아요...

    만약 절대 경로가D:\WindowMobile\backgroud\bg.jpg이면

    Form_Load 부분에 어떻게 적어야하나요...?
  2. 안태윤
    좋은 강좌 감사드립니다!

    프로그래밍을 하던중 문제가 생겨서 질문을 하나 드리려구요.
    뒷 배경을 그리지 않고 ImageBox 컨트롤을 통해서 배경 이미지를 생성 하였습니다.
    그 후 글씨를 그렸는데 화면에 정상 출력이 되지 않습니다.

    SendToBack() 메서드를 사용해서 가장 뒤로 보내면 될 것이라 생각했는데 아닌 것 같았습니다.

    ImageBox를 사용하여 그위에 글씨를 그릴 수 있는 방법은 없을까요?
    • 2010/02/24 11:29 [Edit/Del]
      안녕하세요
      이 예제는 OnPaint를 이용해서 폼에 그리는거라
      컨트롤이 위를 덮으면 가려지게 됩니다.

      원하시는 모양을 하려면
      다른 컨트롤에 텍스트나 이미지를 넣은 후 겹치는
      것일텐데 그 방법은 원하시는건 아닌거 같고...

      이 문제는 저도 고민을 해봐야 겠네요 ㅎㅎ;;
  3. 안녕하세요~ 또 이렇게 글을 남기게 되네요.


    프로젝트 생성시 첨음에 생기는 form에 대해서는
    OnPaintBackground 가 저절로 호출이 되는데 제가 만든 다른 form들은 form.Show()를 할때 OnPaintBackground 를 override 해도 호출되지가 안네요?

    왜 그런걸까요?ㅠㅠ
    • 2010/03/05 19:45 [Edit/Del]
      이유는 알았습니다. usercontrol을 사용하니까 OnPaintBackground를 호출하지 않네요.

      음. 이럴땐 어쩌야 하는걸까요; usercontrol에서 parent 쪽으로 넘겨야하는건가요?

Name __

Password __

Link (Your Website)

Comment

SECRET | 비밀글로 남기기

1 ... 50 51 52 53 54 55 56 57 58 ... 79