Witam mam pewne pytanko ponieważ narysowałem pewna siatkę (która jest widoczna na zdjęciu) i mam teraz pewne pytanko co zrobić żeby obiekt który zostanie stworzony w tej siatce ustawiał się zawsze w środku kwadratu ? Czy takie coś jest możliwe na tym co teraz mam czy możne jakoś inaczej to poustawiać a jeżeli tak to jak ?
X = siatka.Width/2 - obiekt.width/2
Y = siatka.Height/2 - obiekt.Height/2
Dziękuję ale ja raczej chciał bym zrobić takie coś ze będę mógł te elementy przesuwać swobodnie po siatce a po przeniesieniu obiektu na dany kwadrat będzie się automatycznie przenosić na środek
Jeżeli chodzi o siatkę to nie jest ona ze zdj czy coś tylko jest ona zrobiona w kodzie
private void panel1_Paint(object sender, PaintEventArgs e)
{
Pen p = new Pen(Color.Black);
for (int y = 0; y < panel1.Width; y += 100)
{
e.Graphics.DrawLine(p, 0, y, panel1.Width, y);
}
for (int x = 0; x < panel1.Width; x += 100)
{
e.Graphics.DrawLine(p, x, panel1.Height, x, 0);
}
}
jeżeli chodzi o Przyciski to zrobiłem to tak żeby te przyciski mogły się przesuwać
private void dodajToolStripMenuItem_Click(object sender, EventArgs e)
{
Button b = new Button();
Console.WriteLine("{0},{1}",x,y);
b.Text = "dsadas";
b.MouseDown += (s, eb) =>
{
if (eb.Button == MouseButtons.Left)
{
px = eb.X;
py = eb.Y;
}
};
b.MouseMove += (s, me) =>
{
if (me.Button == MouseButtons.Left)
{
b.Left += me.X - px;
b.Top += me.Y - py;
}
};
panel1.Controls.Add(b);
}
i chce to zrobić tak ze jeżeli ten przycisk który utworze pojawi się w tym kwadracie to automatycznie przeniesie się na środek tego kwadratu a jak go przesunę w prawo czy lewo to przeniesie się na środek innego kwadratu
Plansza z kostkami N * M
. Każda kostka ma szerokość W
.
Aby otrzymać środek kostki Cubes[K,R]
należy:
xLocation = K * W + (W/2);
yLocation = R * W + (W/2);
Teraz jeśli środek przycisku P
o wymiarach J * H
ma być w lokalizacji xLocation,yLocation
to rysujesz go w:
xLocation - (P.J/2)
yLocation - (P.H/2)