2017-09-10 34 views
-2

BackColorのフォーム2(チェックボックスをオンにする)を、可能なすべての色をスムーズにフェードインするように、RGBから0、0、 0、255、255、255まで。ありがとう。可能なすべてのRGBの組み合わせをループ

これはイムがやって何です:

Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged 
    Dim lngR As Long 
    Dim lngG As Long 
    Dim lngB As Long 

    For lngR = 0 To 255 
     For lngG = 0 To 255 
      For lngB = 0 To 255 
       Me.BackColor = RGB(lngR, lngG, lngB) 
       Sleep(30) 'change this value to change speed 
      Next lngB 
     Next lngG 
    Next lngR 
End Sub 

とエラーイム取得は次のとおりです。Value of Integer cannot be converted to Color.

+2

SOは、「これは私がしたいことです、どうすればいいですか」という場所ではありません。 「これは私がやりたいことです、これはどうやってやっているのか、試してみるとどうなりますか、どうやって修正するのか」と言うところです。あなたがまだ適切な調査をしておらず、試みを行っていないなら、ここに投稿するのは時期尚早です。 – jmcilhinney

+0

私の間違い、申し訳ありません。私のポストを更新しました。 – csAlphyy

+0

ネストされたループが終了しました。単一のループを使用し、各rgbコンポーネントを同じ値に設定します。 –

答えて

0

私は戻って色を変更した後のリフレッシュを()を追加することによって色の変化を得ました。これは、色の変化を見るのに十分なほどループを遅くしますが、約1660万回ループしています(再ペイントしない場合は非常に高速ですが、再ペイントでは非常に遅くなります)、ユーザーは眠りにつきます。

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click 
     Dim intR As Int32 
     Dim intG As Int32 
     Dim intB As Int32 
     'Alpha channel is implicitly opaque (255)) 
     Dim x As Integer = 0 
     For intR = 0 To 254 Step 20 
      For intG = 0 To 254 Step 20 
       For intB = 0 To 254 Step 20 
        Threading.Thread.Sleep(10) 'change this value to change speed, 500 is 1/2 second 
        '16.6 million loops Wow - cut that down by using Step 
        Me.BackColor = Color.FromArgb(intR, intG, intB) 
        Refresh() 
        x += 1 
       Next 
      Next intG 
     Next intR 
     MessageBox.Show($"Red = {intR}, Green = {intG}, Blue = {intB}{vbCrLf}The value of x is {x}") 
    End Sub 
関連する問題