[WinForm] Graphic을 PictureBox에 넣어보자!


픽처박스에 이미지를 바로 넣으면 좌표와 크기 조절등에서 제약이 생긴다.

그래서 그래픽을 사용하였다. 그리리고 문제는 그림이 윗창에 가리거나 최소화 되는경우

그림이 지워지는 경우가 발생하였다. ( 당연한 경우지만.. )


그래서 알아본결과

http://www.techotopia.com/index.php/Drawing_Graphics_in_C_Sharp

처럼 Graphic을 사용할시 Paint 이벤트를 사용해 변경이 있을때 마다 매번 다시 그려 줘야 한다고 한다.

그러나 Paint 이벤트를 사용한다면 고속처리가 어렵다.

그래서 픽처박스의 고속 이미지 처리와 Graphic을 사용하여 위치와 크기 조절을 할수 있는방법을

알아보겠다 ( 왜... 구글링해도 안나올까? )

Created with colorer-take5 library. Type 'csharp'

//그��픽 ����와..
            Graphics g;

            //비트맵 ����를 준비한다
            Bitmap canvas;

            //비트맵을 할당��고 크기를 정한다 (물론 여러 ����을 사용해도됨)
            canvas = new Bitmap(1024, 768);

            //픽쳐박스�� 이미지에 비트맵을 참조한다
            pictureBox1.Image = canvas;
            //크기도 맞출라면 맞추고,,
            pictureBox1.Size = canvas.Size;

            //그��픽을 비트맵으로 부터 가져��다
            g = Graphics.FromImage(canvas);

            //그��픽에 원��는 모양을 그린다
            g.DrawImage(Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\Koala.jpg"), 
                new Rectangle(0,0,canvas.Width,canvas.Height));
            g.DrawRectangle(new Pen(Brushes.Black), new Rectangle(10, 10, 50, 50));
 
 
 
 























확실히 창을 최소화 했다가 최대화 해본다던지 그림부분을 화면 밖으로 드래그하여 보내본다던지

해보면 이벤트를 받아 매번 다시그려주는 방법보다 월등히 빠른속도를 볼수 있다.

또한 하나의 컨테이너에 여러가지 그림을 그릴수 있다.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  • hika 2010/09/23 11:42 #

    gdi repaint는 고전중에 고전이지.
    너무 고전이라 검색해도 안나오는 거겠지.
  • superSC 2010/09/26 00:28 #

    ㅎㅎ ; 그 고전이 중요했습니다 ㅋ

  •  
    Yamecoder 야매코더_
    C# 2010.12.04 02:33
    Powerd by Tistory, designed by criuce
    rss