1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
   |  
Imports System.Drawing.Drawing2D
Imports System.IO
Public Class Form1
    Private layers As Layers
    Private parking As Bitmap = Nothing
    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Me.DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
        Me.Panel1.AutoScroll = True
        Me.PicParking.Location = New Point()
        PicParking.SizeMode = PictureBoxSizeMode.AutoSize
        PicParking.BackColor = Color.Transparent
        parking = My.Resources.ParkingImage
        Me.PicParking.Image = parking
        PrepareListImages()
 
    End Sub
    Private Sub PrepareListImages()
        'peut etre fait dans le designer
        Me.ImageList1.ColorDepth = ColorDepth.Depth32Bit
        Me.ImageList1.ImageSize = New Size(64, 64)
        Me.ImageList1.Images.Add(My.Resources.image0)
        Me.ImageList1.Images.Add(My.Resources.image1)
        Me.ImageList1.Images.Add(My.Resources.image2)
        Me.ImageList1.Images.Add(My.Resources.image3)
 
 
        'assignation de chaque image à un layer 
        '& ajout a la liste layers
        layers = New Layers
 
        Dim name As String
        Dim lay As Layer
 
        For i As Integer = 0 To ImageList1.Images.Count - 1
            If i = 0 Then
                name = "parking"
            Else
                name = "bmp" + i.ToString
            End If
 
            lay = New Layer() With {
                 .Visible = False,
                 .Angle = 0.0,
                 .Nom = name,
                 .Left = 0,
                 .Top = 0,
                 .Image = ImageList1.Images(i)
            }
            layers.Add(lay)
        Next
        DataGridView1.DataSource = layers
    End Sub
 
 
 
    Private Sub PicParking_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles PicParking.Paint
        Dim gr As Graphics = e.Graphics
        For i As Integer = 0 To layers.Count - 1
            Dim item As Layer = layers(i)
            If Not item.Visible Then Continue For
            Using m As New Matrix
                m.RotateAt(item.Angle, item.Center)
                gr.Transform = m
                gr.DrawImage(item.Image, item.Left, item.Top)
            End Using
        Next
 
    End Sub
    Private selLayer As Layer = Nothing
 
 
    Private Sub DataGridView1_CellEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
        If Me.DataGridView1.SelectedRows.Count = 1 Then
            selLayer = Me.DataGridView1.SelectedRows(0).DataBoundItem
        End If
        Me.PicParking.Invalidate()
    End Sub
    Private Sub DataGridView1_SelectionChanged(sender As System.Object, e As System.EventArgs) Handles DataGridView1.SelectionChanged
 
    End Sub
 
    Private Sub PicParking_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PicParking.MouseMove
        If selLayer Is Nothing Then Return
        selLayer.Left = e.X
        selLayer.Top = e.Y
        PicParking.Invalidate()
 
    End Sub
 
    Private Sub PicParking_MouseUp(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles PicParking.MouseUp
        If selLayer Is Nothing Then Return
        If e.Button = Windows.Forms.MouseButtons.Right Then
            selLayer.Left = e.X
            selLayer.Top = e.Y
            PicParking.Invalidate()
            selLayer = Nothing
        End If
 
 
 
    End Sub
  Private Sub btnFusion_Click(sender As System.Object, e As System.EventArgs) Handles btnFusion.Click
        Dim bmpFusion As New Bitmap(PicParking.Image)
        Using gr As Graphics = Graphics.FromImage(bmpFusion)
            For i As Integer = 0 To layers.Count - 1
                Dim item As Layer = layers(i)
                If Not item.Visible Then Continue For
                Using m As New Matrix
                    m.RotateAt(item.Angle, item.Center)
                    gr.Transform = m
                    gr.DrawImage(item.Image, item.Left, item.Top)
                End Using
            Next
        End Using
        bmpFusion.Save(Directory.GetCurrentDirectory + "\saved.bmp")
 
    End Sub
End Class | 
Partager