// 폼디자인 1. 패널은 docking
// 2. 그안에 picturebox는 dock을 none으로 생성 ( 확대,축소시 스크롤바가 자동으로 생성된다 )
// 전역변수로 zoom 비율 생성
private double ZOOM_FACTOR = 1.2;
private double NOW_FACOTR = 1;
// 리사이즈
static OpenCvSharp.Size resize = new OpenCvSharp.Size();
// 휠이벤트를 생성합니다
private void pic_MouseWheel(object sender, MouseEventArgs e)
{
if (e.Delta > 0)
{
ZoomIn();
}
else
{
ZoomOut();
}
}
// 확대, 축소 함수
private void ZoomIn()
{
if (NOW_FACOTR <= 2)
{
pic.SizeMode = PictureBoxSizeMode.Zoom; // 여긴 StretchMode 로 해도 상관 없음, zoom으로 하는 경우 화면 배율을 유지하면서 증가
pic.Width = Convert.ToInt32((double)pic.Width * ZOOM_FACTOR);
pic.Height = Convert.ToInt32((double)pic.Height * ZOOM_FACTOR);
metroPanel4.Width = Convert.ToInt32((double)pic.Width * ZOOM_FACTOR);
metroPanel4.Height = Convert.ToInt32((double)pic.Height * ZOOM_FACTOR);
resize = new OpenCvSharp.Size(pic.Width, pic.Height);
NOW_FACOTR = NOW_FACOTR * ZOOM_FACTOR;
// 화면 갱신필요
needConvert = true;
DrawObject(true);
}
}
private void ZoomOut()
{
if (NOW_FACOTR >= 0.5)
{
pic.SizeMode = PictureBoxSizeMode.Zoom; // 여긴 StretchMode 로 해도 상관 없음, zoom으로 하는 경우 화면 배율을 유지하면서 증가
pic.Width = Convert.ToInt32((double)pic.Width / ZOOM_FACTOR);
pic.Height = Convert.ToInt32((double)pic.Height / ZOOM_FACTOR);
metroPanel4.Width = Convert.ToInt32((double)pic.Width / ZOOM_FACTOR);
metroPanel4.Height = Convert.ToInt32((double)pic.Height / ZOOM_FACTOR);
resize = new OpenCvSharp.Size(pic.Width, pic.Height);
NOW_FACOTR = NOW_FACOTR / ZOOM_FACTOR;
// 화면 갱신필요
needConvert = true;
DrawObject(true);
}
}