2011-06-02 6 views
0

Je suis un débutant MonoTouch 4 et juste avec les couleurs au hasard sur la fenêtre et à ma grande surprise, le code ci-dessous ne fonctionne pas:MonoTouch Couleur de fond aléatoire

// Le nom AppDelegate est référencé dans le MainWindow. fichier xib. classe partielle publique AppDelegate: UIApplicationDelegate { Random rand = new Aléatoire();

// 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(); 
    } 

Chaque fois que je clique sur le bouton, l'événement TouchDown est correctement mise à feu et aussi l'étiquette est réglée avec des valeurs de couleur rouge, vert et bleu au hasard, mais ne voyant aucun effet sur la couleur de la fenêtre.

Aidez-nous s'il vous plaît.

Répondre

0

Vous ne voyez aucun effet car la plage de valeurs RVB de la classe UIColor doit être comprise entre 0,0 et 1,0. Tout élément inférieur à 0,0 est considéré comme 0,0 et tout élément supérieur à 1,0 est considéré comme 1,0. Donc, votre code créera toujours la couleur blanche.

Pour créer une couleur avec des valeurs RVB de R: 100, G: 150 et B: 200, faire comme ceci:

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

Je presque ai eu. Y at-il une raison pour laquelle vous devez diviser chaque nombre RVB par 255? – user766237

+0

Oui, pour convertir votre nombre en une fraction de 1, la plage autorisée des paramètres est comprise entre 0 et 1. – tomfanning

+0

Par ailleurs, l'exemple de Dimitris est incorrect car chaque 255 doit être suivi d'un 'd' de sorte que la division entière ne soit pas N'aura pas lieu. – tomfanning