PDA

View Full Version : رنگ رندوم



kyrie-chan
جمعه 25 فروردین 1391, 16:12 عصر
اگر بخوایم هر بار که توپ میخوره زمین رنگش رندوم عوض چه کنیم ؟ وقتی که از کد رو به رو استفاده کردیم :
p.CreateGraphics.FillEllipse(Brushes.SlateBlue, 0, 0, 50, 50)

armitakarimi
جمعه 25 فروردین 1391, 17:58 عصر
سلام اول یک شی از نوع رنگ ایجاد می کنی
dim x as new color
دوم میای تو سه متغیر ،سه عدد تصادفی با تابع rand ایجاد می کنی
حالا با استفاده از تابع rgb اون سه متغیر رو تو تابع rgb می ریزی و نتیجه رو در شی رنگ



dim x as new color
dim x,y,z as byte
x= rand()
y=random
z=random
x \ rgb(x,y,z)

tstsst
جمعه 25 فروردین 1391, 18:12 عصر
سلام اول یک شی از نوع رنگ ایجاد می کنی
dim x as new color
دوم میای تو سه متغیر ،سه عدد تصادفی با تابع rand ایجاد می کنی
حالا با استفاده از تابع rgb اون سه متغیر رو تو تابع rgb می ریزی و نتیجه رو در شی رنگ

نمی شه چون brushes قرمز سبز آبی (RGB) قبول نمی کنه
این جوری درست کار می کنه ولی...
Dim brush As Brush = Brushes.Red
Private Function br()
Dim rn = Int(Rnd() * 10) + 1
If rn = 1 Then
brush = Brushes.AliceBlue
ElseIf rn = 2 Then
brush = Brushes.Pink
ElseIf rn = 3 Then
brush = Brushes.Black
ElseIf rn = 4 Then
brush = Brushes.Blue
ElseIf rn = 5 Then
brush = Brushes.RoyalBlue
ElseIf rn = 6 Then
brush = Brushes.SaddleBrown
ElseIf rn = 7 Then
brush = Brushes.SlateBlue
ElseIf rn = 8 Then
brush = Brushes.Wheat
ElseIf rn = 9 Then
brush = Brushes.Violet
ElseIf rn = 10 Then
brush = Brushes.Tomato
End If
End Function
و تو تایمری که حرکت رو کنترل می کرد در قسمت خوردن به دیوارش (
If p.Bottom > Panel1.Bottom Then) فانکشن رو صدا بزن و در آخر :
p.CreateGraphics.FillEllipse(Brush, 0, 0, 50, 50)

kyrie-chan
جمعه 25 فروردین 1391, 18:13 عصر
من خودم از این کد استفاده کردم :

Dim rnd As New Random


Dim mybrush As New SolidBrush(Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)))

p.CreateGraphics.FillEllipse(mybrush, 0, 0, 50, 50)



بابت این که پاسخ دادین ممنونم ، به نظر کدی که من نوشتم ایرادی نمیگیره ، ایرادی داره ؟

kyrie-chan
شنبه 02 اردیبهشت 1391, 12:41 عصر
اگر بخوایم رنگ رندوم فقط از بین سه رنگ آبی و زرد و قرمز انتخاب بشه چکار کنیم ؟

alimanam
شنبه 02 اردیبهشت 1391, 17:46 عصر
با سلام


اگر بخوایم رنگ رندوم فقط از بین سه رنگ آبی و زرد و قرمز انتخاب بشه چکار کنیم ؟

این کار بسیار ساده است فقط کافیه مقادیر RGB رنگ ها رو بدونین .برای این منظور کد کوچکی براتون آماده کردم .


Public Class Form1

Private m_Rnd As New Random
Private Function RandomColor() As Color

Dim red As Color = Color.FromArgb(255, m_Rnd.Next(255, 255), m_Rnd.Next(0, 0), m_Rnd.Next(0, 0))
Dim yellow As Color = Color.FromArgb(255, m_Rnd.Next(255, 255), m_Rnd.Next(255, 255), m_Rnd.Next(0, 0))
Dim blue As Color = Color.FromArgb(255, m_Rnd.Next(0, 0), m_Rnd.Next(0, 0), m_Rnd.Next(255, 255))

Dim randomNumber As Int16 = m_Rnd.Next(0, 3)

Select Case randomNumber
Case Is = 0
Return red
Case Is = 1
Return yellow
Case Is = 2
Return blue
End Select

End Function

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PictureBox1.BackColor = RandomColor()
End Sub

End Class


موفق باشید./

kyrie-chan
شنبه 02 اردیبهشت 1391, 19:10 عصر
مشکل اینجاست من میخوام از این کد به جای این کد خودم استفاده کنم :



Dim rnd AsNew Random


Dim mybrush AsNew SolidBrush(Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256)))

p.CreateGraphics.FillEllipse(mybrush, 0, 0, 50, 50)


نمیدونم چطوری برای این براش تعریف کنم ، اونطوری رو خودم میدونستم ... بازم ممنون

alimanam
شنبه 02 اردیبهشت 1391, 19:39 عصر
با سلامی دوباره !


مشکل اینجاست من میخوام از این کد به جای این کد خودم استفاده کنم

کسی نگفته استفاده نکنین !!!!!!!!!!! خوب شما در نهایت باید یه رنگ برای SolidBrush در نظر بگیرین و این رنگ با توجه به عرایض شما فقط باید از رنگ های قرمز و زرد و آبی انتخاب شده باشه پس نیاز دارین در یک تابع این کار رو انجام بدین ( مقدار بازگشتی تابع در انتها یک رنگ هستش که ممکنه قرمز یا زرد یا آبی باشه ) و در پایان کار از اون تابع استفاده نمائید به این صورت :


Dim mybrush As New SolidBrush(RandomColor)
PictureBox1.CreateGraphics.FillEllipse(mybrush, 0, 0, 50, 50)


موفق باشید./

kyrie-chan
شنبه 02 اردیبهشت 1391, 21:50 عصر
خیلی لطف کردین . ممنون