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 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
| using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DA.GenerateurUppaal
{
public partial class FrmMain : Form
{
private Variables oVariables = new Variables();
private int debutObjetX;
private int debutObjetY;
private int positionDebutX;
private int positionDebutY;
private int finObjetX;
private int finObjetY;
private bool clickOK = false;
private Color Ajout;
public FrmMain()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//génération de ma grille avec mes X*Y usercontrol.
oVariables.tailleZoneX = Convert.ToInt16(TailleZoneX.Value);
oVariables.tailleZoneY = Convert.ToInt16(TailleZoneY.Value);
oVariables.casesZone = new Case[oVariables.tailleZoneX, oVariables.tailleZoneY];
int largeur = zonePO.Width / oVariables.tailleZoneY;
int longueur = zonePO.Height / oVariables.tailleZoneX;
for (int i = 0; i < oVariables.tailleZoneX; i++)
{
for (int j = 0; j < oVariables.tailleZoneY; j++)
{
oVariables.casesZone[i, j] = new Case(i, j);
oVariables.casesZone[i, j].Left = j * largeur;
oVariables.casesZone[i, j].Top = i * longueur;
oVariables.casesZone[i, j].Height = longueur;
oVariables.casesZone[i, j].Width = largeur;
//evts
//oVariables.casesZone[i, j].MouseUp += new MouseEventHandler(Case_MouseUp);
oVariables.casesZone[i, j].MouseDown += new MouseEventHandler(Case_MouseDown);
oVariables.casesZone[i, j].MouseMove += new MouseEventHandler(Case_MouseMove);
oVariables.casesZone[i, j].DragEnter += new DragEventHandler(Case_DragEnter);
oVariables.casesZone[i, j].DragDrop += new DragEventHandler(Case_DragDrop);
this.zonePO.Controls.Add(oVariables.casesZone[i, j]);
}
}
}
private void Case_DragDrop(object sender, DragEventArgs e)
{
Case macase = (Case)sender;
macase.BackColor = Color.CadetBlue;
MessageBox.Show("OK");
}
private void Case_DragEnter(object sender, DragEventArgs e)
{
Case macase = (Case)sender;
macase.BackColor = Color.Green;
}
void Case_MouseMove(object sender, MouseEventArgs e)
{
Case macase = (Case)sender;
if (clickOK)
{
macase.BackColor = Color.AliceBlue;
}
}
void Case_MouseDown(object sender, MouseEventArgs e)
{
Case macase = (Case)sender;
clickOK = true;
//memorisation des infos
debutObjetX = macase.colonne;
debutObjetY = macase.ligne;
positionDebutX = e.X;
positionDebutY = e.Y;
//tbxApercu.Text = "debut : " + e.X.ToString() + " " + e.Y.ToString();
//drag
macase.BackColor = Color.Gold;
macase.DoDragDrop(macase.BackColor, DragDropEffects.Copy);
}
void Case_MouseUp(object sender, MouseEventArgs e)
{
Case macase = (Case)sender;
clickOK = false;
tbxApercu.Text = tbxApercu.Text + " fin : " + e.X.ToString() + " " + e.Y.ToString();
tbxApercu.Text = tbxApercu.Text + " taille case : " + macase.Width.ToString() + " " + macase.Height.ToString();
//calcul du deplacement en X
int deplacementX = Math.Abs(e.X + positionDebutX) / macase.Width;
int deplacementY = Math.Abs(e.Y + positionDebutY) / macase.Height;
if (e.X < 0)
{
finObjetX = debutObjetX - deplacementX;
}
else
{
finObjetX = debutObjetX + deplacementX;
}
if (e.Y < 0)
{
finObjetY = debutObjetY - deplacementY;
}
else
{
finObjetY = debutObjetY + deplacementY;
}
oVariables.casesZone[finObjetY, finObjetX].BackColor = Color.Red;
}
}
} |
Partager