60 likes | 212 Views
画像の大きさ. 640 x 376. WZero3. WZero3 のサイズ. 600 x 372. 完全に収まる. 480x 424. 600 x 612. 600 x 480. 600 x 581. 縦が大きすぎる. 縦が大きすぎる場合. 元の画像. 縮小 X 0.78. 600 x 480. 640 x 376. 拡縮率 = Math. Min ( (float)Width / (float)original.Width,
E N D
画像の大きさ 640 x 376 WZero3 WZero3 のサイズ 600 x 372 完全に収まる 480x 424 600 x 612 600 x 480 600 x 581 縦が大きすぎる
縦が大きすぎる場合 元の画像 縮小 X 0.78 600 x 480 640 x 376 拡縮率 = Math.Min( (float)Width / (float)original.Width, (float)Height / (float)original.Height); WZero3 拡大 X 1.06 拡縮率 = Math.Max( (float)Width / (float)original.Width, (float)Height / (float)original.Height);
完全に収まる場合 元の画像 拡大 X 1.01 640 x 376 600 x 372 拡縮率 = Math.Min( (float)Width / (float)original.Width, (float)Height / (float)original.Height); WZero3 拡大 X 1.06 拡縮率 = Math.Max( (float)Width / (float)original.Width, (float)Height / (float)original.Height); 以上より、画像のサイズによらず、拡大縮小率は 内接の場合は Math.Min、それ以外は Math.Max でよい。
内接する場合の処理 内接する場合の sx, sy, sWidth, sHeight WZero3の表示サイズ Destination サイズ 拡縮率 = Math.Min( (float)Width / (float)original.Width, (float)Height / (float)original.Height); centerX, centerY
外接する場合の処理 外接する場合の sx, sy, sWidth, sHeight WZero3の表示サイズ Destination サイズ 拡縮率 = Math.Max( (float)Width / (float)original.Width, (float)Height / (float)original.Height); centerX, centerY
2倍から、3倍に拡大する場合 2倍の時の sx, sy, sWidth, sHeight 3倍の時の newSx, newSy, newWidth, newHeight WZero3の表示サイズ Destination サイズ centerX, centerY