Imports System.Drawing.Drawing2D Public Class Form1 Private centerpoint As System.Drawing.PointF Dim angle As Double Private radius As Double Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load centerpoint.X = Me.Width / 2 centerpoint.Y = Me.Height / 2 radius = Me.Height / 8 angle = 0 Timer1.Enabled = True Timer1.Interval = 350 Randomize() End Sub Private Sub drawforms(ByVal sides As Integer, ByRef gr As System.Drawing.Graphics) Dim points() As System.Drawing.PointF Dim anglediff As Double Dim thisangle As Double Dim iter As Integer Dim mypen As System.Drawing.Pen ReDim points(sides) anglediff = 360 / sides thisangle = angle mypen = New Pen(RandomRGBColor(), 3) Dim mybrush As SolidBrush = New SolidBrush(RandomRGBColor()) For iter = 0 To points.Length - 1 points(iter).X = radius * Math.Cos(DegreeToRad(thisangle)) + centerpoint.X points(iter).Y = radius * Math.Sin(DegreeToRad(thisangle)) + centerpoint.Y thisangle = thisangle + anglediff Next gr.DrawPolygon(mypen, points) gr.FillPolygon(mybrush, points) End Sub Private Function RandomRGBColor() As Color Dim m_Rnd As New Random Return Color.FromArgb(255, m_Rnd.Next(0, 255), m_Rnd.Next(0, 255), m_Rnd.Next(0, 255)) End Function Private Sub drawforms3d(ByVal sides As Integer, ByRef gr As System.Drawing.Graphics) Dim points() As System.Drawing.PointF Dim anglediff As Double Dim thisangle As Double Dim iter As Integer Dim mypen As System.Drawing.Pen Dim edge_colors() As Color Dim mycolor As System.Drawing.Color mycolor = New Color ReDim points(sides) ReDim edge_colors(sides - 1) anglediff = 360 / sides thisangle = angle mypen = New Pen(Color.Black, 3) For iter = 0 To points.Length - 1 points(iter).X = radius * Math.Cos(DegreeToRad(thisangle)) + centerpoint.X points(iter).Y = radius * Math.Sin(DegreeToRad(thisangle)) + centerpoint.Y thisangle = thisangle + anglediff Next gr.DrawPolygon(mypen, points) Dim path_brush As New PathGradientBrush(points) path_brush = New PathGradientBrush(points) path_brush.CenterColor = RandomRGBColor() gr.FillPolygon(path_brush, points) End Sub Private Function DegreeToRad(ByVal deg As Integer) As Double 'traduit les degrée en radian Dim rad As Double rad = deg * Math.PI / 180 DegreeToRad = rad End Function Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Invalidate() End Sub Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint Dim iter As Byte iter = Rnd() * 10 + 3 If Timer1.Enabled Then centerpoint.X = Me.Width / 2 centerpoint.Y = Me.Height / 2 drawforms3d(iter, e.Graphics) centerpoint.X = Me.Width / 2 + radius * 2.1 centerpoint.Y = Me.Height / 2 drawforms(iter, e.Graphics) End If End Sub End Class
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionImports System.Drawing.Drawing2D Public Class Form1 Private centerpoint As System.Drawing.PointF Dim angle As Double Dim dt1 As DateTime Dim dt2 As DateTime Dim ts As TimeSpan Dim paletteblue() As System.Drawing.Color Dim palettegreen() As System.Drawing.Color Dim choosencolor As String Private radius As Double Private Sub InitPaletteBlue() ReDim Preserve paletteblue(10) paletteblue(0) = Color.LightBlue paletteblue(1) = Color.LightSteelBlue paletteblue(2) = Color.DeepSkyBlue paletteblue(3) = Color.DodgerBlue paletteblue(4) = Color.RoyalBlue paletteblue(5) = Color.Navy paletteblue(6) = Color.DarkBlue paletteblue(7) = Color.Blue paletteblue(8) = Color.SkyBlue paletteblue(9) = Color.CornflowerBlue End Sub Private Sub InitPaletteGreen() ReDim Preserve palettegreen(10) palettegreen(0) = Color.OliveDrab palettegreen(1) = Color.YellowGreen palettegreen(2) = Color.Chartreuse palettegreen(3) = Color.LightGreen palettegreen(4) = Color.ForestGreen palettegreen(5) = Color.PaleGreen palettegreen(6) = Color.DarkGreen palettegreen(7) = Color.Green palettegreen(8) = Color.Lime palettegreen(9) = Color.SpringGreen End Sub Private Sub Form1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress dt2 = DateTime.Now ts = dt2.Subtract(dt1) dt1 = DateTime.Now End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load centerpoint.X = Me.Width / 2 centerpoint.Y = Me.Height / 2 radius = Me.Height / 8 angle = 90 Timer1.Enabled = True Timer1.Interval = 1550 Randomize() Me.KeyPreview = True InitPaletteBlue() InitPaletteGreen() End Sub Private Sub drawforms3d(ByVal sides As Integer, ByRef gr As System.Drawing.Graphics) Dim points() As System.Drawing.PointF Dim mrend As New Random Dim anglediff As Double Dim colornum As Integer Dim thisangle As Double Dim iter As Integer Dim coloriter As Integer Dim mypen As System.Drawing.Pen Dim edge_colors() As Color Dim mybrush As SolidBrush colornum = mrend.Next(0, 9) If choosencolor = "green" Then mybrush = New SolidBrush(paletteblue(colornum)) Else mybrush = New SolidBrush(palettegreen(colornum)) End If ReDim points(sides) ReDim edge_colors(sides) anglediff = 360 / sides thisangle = angle mypen = New Pen(Color.Black, 3) For iter = 0 To points.Length - 1 points(iter).X = radius * Math.Cos(DegreeToRad(thisangle)) + centerpoint.X points(iter).Y = radius * Math.Sin(DegreeToRad(thisangle)) + centerpoint.Y thisangle = thisangle + anglediff Next gr.DrawPolygon(mypen, points) Dim path_brush As New PathGradientBrush(points) path_brush.CenterColor = Color.Black For coloriter = 0 To edge_colors.Length - 1 If coloriter Mod 2 = 0 Then If choosencolor = "green" Then edge_colors(coloriter) = paletteblue(colornum) Else edge_colors(coloriter) = palettegreen(colornum) End If Else edge_colors(coloriter) = Color.Black End If Next path_brush.SurroundColors = edge_colors gr.FillPolygon(path_brush, points) End Sub Private Function DegreeToRad(ByVal deg As Integer) As Double 'traduit les degrée en radian Dim rad As Double rad = deg * Math.PI / 180 DegreeToRad = rad End Function Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick frame.Invalidate() End Sub Private Sub DrawBoard(ByRef gr As System.Drawing.Graphics) ' dessine la table du jeu en 3 dimension Dim face(3) As Point Dim margin As Integer Dim edge_colors(3) As Color Dim mrend As New Random Dim colornum As Integer margin = 8 colornum = mrend.Next(0, 9) If mrend.Next(0, 3700) Mod 5 = 0 Then choosencolor = "blue" Else choosencolor = "green" End If face(0).X = 0 face(0).Y = 2 * margin face(1).X = face(0).X + margin face(1).Y = face(0).Y - margin face(2).X = face(1).X + 2.5 * radius face(2).Y = face(1).Y face(3).X = face(0).X + 2.5 * radius face(3).Y = face(0).Y Dim path_brush As New PathGradientBrush(face) path_brush.CenterColor = Color.Black If choosencolor = "green" Then edge_colors(0) = palettegreen(colornum) Else edge_colors(0) = paletteblue(colornum) End If edge_colors(1) = Color.Black If choosencolor = "green" Then edge_colors(2) = palettegreen(colornum) Else edge_colors(2) = paletteblue(colornum) End If edge_colors(3) = Color.Black path_brush.SurroundColors = edge_colors gr.FillPolygon(path_brush, face) face(0).X = 0 face(0).Y = 2 * margin face(1).X = face(0).X + 2.5 * radius face(1).Y = face(0).Y face(2).X = face(1).X face(2).Y = face(1).Y + 2.5 * radius face(3).X = face(0).X face(3).Y = face(2).Y path_brush.Dispose() path_brush = New PathGradientBrush(face) If choosencolor = "green" Then path_brush.CenterColor = palettegreen(colornum) Else path_brush.CenterColor = paletteblue(colornum) End If If choosencolor = "green" Then edge_colors(0) = palettegreen(colornum) Else edge_colors(0) = paletteblue(colornum) End If edge_colors(1) = Color.Black If choosencolor = "green" Then edge_colors(2) = palettegreen(colornum) Else edge_colors(2) = paletteblue(colornum) End If edge_colors(3) = Color.Black path_brush.SurroundColors = edge_colors gr.FillPolygon(path_brush, face) face(0).X = 2.5 * radius face(0).Y = 2 * margin face(1).X = face(0).X + margin face(1).Y = face(0).Y - margin face(2).X = face(1).X face(2).Y = face(1).Y + 2.5 * radius face(3).X = face(0).X face(3).Y = face(2).Y + margin path_brush = New PathGradientBrush(face) If choosencolor = "green" Then path_brush.CenterColor = palettegreen(colornum) Else path_brush.CenterColor = paletteblue(colornum) End If If choosencolor = "green" Then edge_colors(0) = palettegreen(colornum) Else edge_colors(0) = paletteblue(colornum) End If edge_colors(1) = Color.Black If choosencolor = "green" Then edge_colors(2) = palettegreen(colornum) Else edge_colors(2) = paletteblue(colornum) End If edge_colors(3) = Color.Black path_brush.SurroundColors = edge_colors gr.FillPolygon(path_brush, face) frame.Width = face(0).X + margin frame.Height = face(3).Y End Sub Private Sub frame_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles frame.Paint Dim m_Rnd As New Random If Timer1.Enabled Then DrawBoard(e.Graphics) centerpoint.X = Me.frame.Width / 2 centerpoint.Y = Me.frame.Height / 2 drawforms3d(m_Rnd.Next(3, 10), e.Graphics) frame.Left = m_Rnd.Next(40, Me.Width - frame.Width * 1.1) Me.frame.Top = m_Rnd.Next(40, Me.Height - frame.Height * 1.1) End If End Sub End Class
sauf que tu crois pas qu'une semaine serai plus aproprié (je trouve que 2 seconde sa fait un peu long non? :S)
sionon c'est super =)