【发布时间】:2012-01-24 23:03:59
【问题描述】:
我反复发现自己希望以更模块化的方式处理 RotateFlipType。
例如,在任何给定时间,我都想存储一个 RotateFlipType 枚举,同时允许用户访问按钮以允许一次单击一次翻转和旋转。当我需要将 RotateFlipType 应用于数据时,我需要稍后存储它。
所以基本上我需要将所有内容分别存储在多个变量中。或者我需要有如下逻辑:
private RotateFlipType ApplyHorizontalFlip(RotateFlipType oldFlip)
{
switch (oldFlip)
{
case RotateFlipType.Rotate180FlipNone:
return RotateFlipType.RotateNoneFlipNone;
case RotateFlipType.Rotate180FlipX:
return RotateFlipType.RotateNoneFlipX;
case RotateFlipType.Rotate180FlipXY:
return RotateFlipType.RotateNoneFlipXY;
case RotateFlipType.Rotate180FlipY:
return RotateFlipType.RotateNoneFlipY;
case RotateFlipType.Rotate270FlipNone:
return RotateFlipType.Rotate90FlipNone;
// etc...
}
}
框架中是否有任何帮助方法,或者任何人都知道?基本上采用任何现有的 RotateFlipType 并通过旋转或翻转来修改它以提供新值。
【问题讨论】:
-
有很多重复值,例如 RotateNoneFlipNone 与 Rotate180FlipXY 完全相同。只有 8 个不同的值。使用反射器之类的工具来查看值。它使您可以从具有 8 个元素的数组创建一个小型查找表。
-
我可以通过单击 Visual Studio 中的转到定义来查看 8 个不同的值。我仍然觉得和他们一起工作很痛苦。即使我单独存储每个值(旋转、翻转X 和翻转Y),将它们转换为枚举也很痛苦。看起来是一页又一页的 switch 语句。
-
在谷歌查询中输入“查找表”并获得第一击。
标签: c# winforms image bitmap rotation