这段代码在 C# 中看起来更干净吗?
Can this code look cleaner in C#?
我有C编程背景,我习惯做丑陋的事情。
在 C# 中是否有更多 elegant/readable 方法来执行此缩放操作:
ImageProcessing.Resize(original, 80, (int)((float)original.Height * (80f / original.Width)));
其中 "original" 是 .Net 图像 class,因此 Image.Width 和 Image.Height 是整数。
正则除法后跟 floor 运算(强制转换为 int
)等同于整数除法。乘法和除法是左结合的。因此,您可以使用更短的代码:
ImageProcessing.Resize(original, 80, 80 * original.Height / original.Width);
为了说服您,假设 Width
和 Height
分别是 300
和 200
。那么您的代码将执行此操作:
(int)(200f * (80f / 300f)) = (int)(200f * 0.2666...) = (int)(53.3333...) = 53
我的代码将执行此操作(其中 /
表示整数除法):
80 * 200 / 300 = 16000 / 300 = 53
如果你想更改代码(看起来没问题):因为 "w/h" 是 aspect ratio 单独计算它 可能 产生更多的自文档代码:
var aspectRatio = original.Width / (float)original.Height;
int newWidth = 80;
ImageProcessing.Resize(original, newWidth, (int)(newWidth / aspectRatio));
我有C编程背景,我习惯做丑陋的事情。
在 C# 中是否有更多 elegant/readable 方法来执行此缩放操作:
ImageProcessing.Resize(original, 80, (int)((float)original.Height * (80f / original.Width)));
其中 "original" 是 .Net 图像 class,因此 Image.Width 和 Image.Height 是整数。
正则除法后跟 floor 运算(强制转换为 int
)等同于整数除法。乘法和除法是左结合的。因此,您可以使用更短的代码:
ImageProcessing.Resize(original, 80, 80 * original.Height / original.Width);
为了说服您,假设 Width
和 Height
分别是 300
和 200
。那么您的代码将执行此操作:
(int)(200f * (80f / 300f)) = (int)(200f * 0.2666...) = (int)(53.3333...) = 53
我的代码将执行此操作(其中 /
表示整数除法):
80 * 200 / 300 = 16000 / 300 = 53
如果你想更改代码(看起来没问题):因为 "w/h" 是 aspect ratio 单独计算它 可能 产生更多的自文档代码:
var aspectRatio = original.Width / (float)original.Height;
int newWidth = 80;
ImageProcessing.Resize(original, newWidth, (int)(newWidth / aspectRatio));