【问题标题】:MonoTouch random Background colorMonoTouch 随机背景颜色
【发布时间】:2011-06-02 06:12:51
【问题描述】:

我是 MonoTouch 4 新手,只是在窗口上尝试随机颜色,令我惊讶的是,下面显示的代码不起作用:

// 在 MainWindow.xib 文件中引用了名称 AppDelegate。 公共部分类 AppDelegate : UIApplicationDelegate { 随机 rand = new Random();

    // This method is invoked when the application has loaded its UI and its ready to run
    public override bool FinishedLaunching (UIApplication app, NSDictionary options)
    {
        // If you have defined a view, add it here:
        // window.AddSubview (navigationController.View);

        objButton.TouchDown += HandleObjButtonTouchDown;
        window.MakeKeyAndVisible ();

        return true;
    }

    void HandleObjButtonTouchDown (object sender, EventArgs e)
    {


        float red, green, blue;
        red = (float) rand.Next(100, 150);
        green = (float) rand.Next(151, 200);
        blue = (float) rand.Next(201, 255);

        window.BackgroundColor = UIColor.Clear;
        window.BackgroundColor = UIColor.FromRGB(red, green, blue);
        objLabel.Text = red.ToString() + "," + blue.ToString() + "," + green.ToString();
    }

每次单击按钮时,TouchDown 事件都会正确触发,并且标签会设置为随机的红色、绿色和蓝色值,但对窗口颜色没有任何影响。

请帮忙。

【问题讨论】:

    标签: xamarin.ios


    【解决方案1】:

    您看不到任何效果,因为 UIColor 类的 RGB 值范围必须在 0.0 到 1.0 之间。任何小于 0.0 的都被认为是 0.0,任何大于 1.0 的都被认为是 1.0。所以你的代码基本上总是会创建白色。

    要创建 RGB 值为 R:100、G:150 和 B:200 的颜色,请执行以下操作:

    UIColor color = UIColor.FromRGB(100 / 255, 150 / 255, 200 / 255);
    

    【讨论】:

    • 我几乎明白了。是否有理由将每个 RGB 数字除以 255?
    • 是的,将您的数字转换为 1 的小数,参数的允许范围在 0 和 1 之间。
    • 另外,Dimitris 的示例是不正确的,因为每个 255 后面都应该跟一个 d,这样就不会发生整数除法。
    • 顺便说一句,我不应该附加 f 而不是 d 吗?因为 FromRGB 方法接受浮点数。
    猜你喜欢
    • 2013-10-14
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 2018-04-15
    • 2017-06-24
    • 1970-01-01
    • 2015-04-26
    • 2021-10-31
    相关资源
    最近更新 更多