c# - 从 Xamarin.iOS 中的 { alpha, red, green, blue } 值创建 CGColor

标签 c# ios xamarin.ios

我想从 ARGB (alpha-RGB) 值创建一个 CGColor。有可能做到吗?怎么办?

最佳答案

如果您有要传入的值,则可以简单地执行以下操作。

UIColor.FromRGBA(red, green, blue, alpha).CGColor;

我们还使用一个小帮助器类将哈希值转换为 UIColors,以防万一您需要它。只需传入哈希值(“#ffffff”)即可。然后在它返回的 UIColor 上调用 .CGColor,或者相应地调整类。

class Colors
    {
        public static UIColor FromHexString(string hexValue, float alpha = 1.0f)
        {
            try
            {
                string colorString = hexValue.Replace("#", "");

                float red, green, blue;

                switch (colorString.Length)
                {
                    case 3: // #RGB
                        {
                            red = Convert.ToInt32(string.Format("{0}{0}", colorString.Substring(0, 1)), 16) / 255f;
                            green = Convert.ToInt32(string.Format("{0}{0}", colorString.Substring(1, 1)), 16) / 255f;
                            blue = Convert.ToInt32(string.Format("{0}{0}", colorString.Substring(2, 1)), 16) / 255f;
                            return UIColor.FromRGBA(red, green, blue, alpha);
                        }
                    case 6: // #RRGGBB
                        {
                            red = Convert.ToInt32(colorString.Substring(0, 2), 16) / 255f;
                            green = Convert.ToInt32(colorString.Substring(2, 2), 16) / 255f;
                            blue = Convert.ToInt32(colorString.Substring(4, 2), 16) / 255f;
                            return UIColor.FromRGBA(red, green, blue, alpha);
                        }
                    case 8: // #RRGGBBAA
                        {
                            red = Convert.ToInt32(colorString.Substring(0, 2), 16) / 255f;
                            green = Convert.ToInt32(colorString.Substring(2, 2), 16) / 255f;
                            blue = Convert.ToInt32(colorString.Substring(4, 2), 16) / 255f;
                            alpha = Convert.ToInt32(colorString.Substring(6, 2), 16) / 255f;

                            return UIColor.FromRGBA(red, green, blue, alpha);
                        }

                    default:
                        throw new ArgumentOutOfRangeException(string.Format("Invalid color value {0} is invalid. It should be a hex value of the form #RBG, #RRGGBB", hexValue));

                }
            }
            catch (Exception genEx)
            {
                return null;
            }
        }
    }

关于c# - 从 Xamarin.iOS 中的 { alpha, red, green, blue } 值创建 CGColor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44385301/

相关文章:

c# - Objective C 到 C#(图像裁剪代码)

pdf - 从流中以 Xamarin 表单呈现 PDF

c# - 如何在 WPF 中创建可绑定(bind)属性?

c# - ToggleButton 内容绑定(bind)到它的状态

c# - Windows 窗体内存泄漏

ios - 从 UISearchDisplayController 转换 ==> UISearchController 无法显示搜索栏

ios - MVVMCross + SQLCipher = 不可能?

c# - 控制台应用程序在 visual studio 中打开后立即关闭

ios - 我应该在我的代码中更改什么以访问所有联系人,而不仅仅是 1 个与 swift 的联系人?

ios - 如何在不滚动的情况下选择 TableView 中的单元格?