본문 바로가기

Programing (프로그래밍)/WPF & C# (C Sharp)

WPF & C# - 이미지 가로세로비율 구하기 ( rate / ratio / 비율 / int / double )

728x90
반응형


 WPF & C# - 이미지 가로세로비율 구하기 ( rate / ratio / 비율 / int / double )



이미지 세로 구하기 - 가로 고정 ( 가로고정 사이즈가 100 이상일 경우 )



1
grid1.Height = grid1.Width * img.NaturalVideoHeight / img.NaturalVideoWidth;
cs


이미지 가로값 구하기 - 세로 고정 ( 세로고정 사이즈가 100 이상일 경우 )



1
grid1.Width = img.Height * mdaPlayer.NaturalVideoWidth / img.NaturalVideoHeight;
cs


주의

int 형에서 ( img.NaturalVideoHeight / img.NaturalVideoWidth ) 이렇게 묶으면 대부분 1이나 2만 나오고 소수점이 안나온다.

아니면 Double 형으로 변환하고 해야 하는데, 사실 귀찮다. 어차피 int 형 값이 나올텐데 궂이...





이미지 세로값 구하기 - 가로 고정 ( 가로고정 사이즈가 없을 경우 )



1
2
int rateW = 100 * img.NaturalVideoWidth / img.NaturalVideoHeight;   // (W:H = rateW:1)
grid1.Height = grid1.Width  * 100 / rateW;
cs



이미지 가로값 구하기 - 가로 고정 ( 가로고정 사이즈가 없을 경우 )



1
2
int rateH = 100 * img.NaturalVideoHeight / img.NaturalVideoWidth;   // (W:H = 1:rateH)
grid1.Width = grid1.Height * 100 / rateH;
cs


주의

int 형에서는 큰수를 먼저 만이렇게 묶으면 대부분 1이나 2만 나오고 소수점이 안나온다.

아니면 Double 형으로 변환하고 해야 하는데, 사실 귀찮다. 어차피 int 형 값이 나올텐데 궂이...



사실... 가장 쉽게 하는방법은?


가로 기준으로 이미지 세로 구하기 - 가로 고정



1
2
3
double imgW = 1024;
double imgH = 0;
imgH = Convert.ToDouble(imgW) * bi.Height / bi.Width;
bi.Height = imgH;
cs




세로 기준으로 이미지 가로 구하기 -  고정



1
2
3
double imgW = 0;
double imgH = 768;
imgW = Convert.ToDouble(imgH) * bi.Width / bi.Height;
bi.Width = imgW;
cs





가로/세로 기준보다 작사이즈 변경하기 - 가로/세 고정



1
2
3
double imgW = 0;
double imgH = 768;
imgW = Convert.ToDouble(imgH) * bi.Width / bi.Height;
bi.Width = imgW;
cs



센스~!

Double 형으로 계산한 후에 결과값은 int 형으로 자동 변환된다.

그래서 간단하게 공식중에 아무거나 하나만 Double 형 으로 컨버팅해주면 해결된다. ^^



728x90
반응형