[CS] 메모4. PictureBox & Graphics

임대희님의 강의 6강

  • PictureBox의 SizeMode 값 뜻

    • Normal : 이미지 크기에 맞춰 PictureBox에 출력
    • StretchImage : Image PictureBox 크기에 맞춰 늘림
    • AutoSize : PictureBox의 크기를 Image 크기에 맞춤
    • CenterImage : PictureBox 중간에 Image 를 배치
    • Zoom : Image의 크기를 PictureBox에 비율에 맞게 늘림
  • 이미지 들고올때

    • 로컬리소스 : 해당경로의 파일을 들고옴. 경로가 다르면 표시안됨
    • 프로젝트 리소스 : 리소스폴더에 복사되서 타PC에서 작업해도 표시됨.
  • PictureBox 이벤트 적용.

    • 해당 pictureBox의 속성-이벤트 에서 원하는 이벤트를 활성화시킬 수 있다.
    • 해당 이벤트에 직접 이름을 정해서 작성한다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace test4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {

        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            pictureBox2.Image = null;
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            pictureBox2.Image = pictureBox1.Image;
        }

        private void pictureBox2_Mouse(object sender, MouseEventArgs e)
        {
            // 마우스 클릭이벤트 발생시-> 오른쪽 버튼 이벤트이면.
            if(e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                // grp라는 그래픽스에 pictureBox2에 생성시킴.
                Graphics grp = pictureBox2.CreateGraphics();
                // pen을 생성시켜 색상 선택
                Pen pen = new Pen(Color.SteelBlue);
                // DrawLine을 이용해서 직선을 그림
                // grp.DrawLine(pen, X좌표 시작점, Y좌표 시작점, X좌표 도착점, Y좌표 도착점);
                grp.DrawLine(pen, e.X - 3, e.Y - 10, e.X + 6, e.Y); //  ↘
                grp.DrawLine(pen, e.X - 14, e.Y, e.X + 6, e.Y);     // --→
                grp.DrawLine(pen, e.X - 3, e.Y + 10, e.X + 6, e.Y); //  ↗
            }
        }

        private void pictureBox2_MouseMove(object sender, MouseEventArgs e)
        {
            // 마우스 클릭이벤트 발생시-> 왼쪽 버튼 이벤트이면.
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                Graphics grp = pictureBox2.CreateGraphics();
                Pen pen = new Pen(Color.SteelBlue);
                grp.DrawLine(pen, e.X - 3, e.Y - 10, e.X + 6, e.Y); //  ↘
                grp.DrawLine(pen, e.X - 14, e.Y, e.X + 6, e.Y);     // --→
                grp.DrawLine(pen, e.X - 3, e.Y + 10, e.X + 6, e.Y); //  ↗
            }
        }
    }
}

좋은 웹페이지 즐겨찾기