001
30.05.2016, 12:29 Uhr
~samkirchner
Gast
|
Nun habe ich es zwar mit dem Drag´n Drop soweit hinbekommen, jedoch habe ich jetzt das Problem, dass ich ja mehrere PB´s im Koordinatensystem belegen muß
Beispiel:
Eine PB im Koordinatensystem hat Size (50,50). Je nachdem welches Schiff ich nun reinziehe variiert die Größe. Wenn ich z.B. ein dreier Schiff setzen will, wäre das z.B. A1, A2, A3. Mein Drag´n Drop setzt aber das Bild nur in A1 rein und es ist nur ein Drittel sichtbar, da die PB´s ja kleiner sind.
im Code sieht das wie folgt aus (allerdings habe ich den von Youtube https://www.youtube.com/watch?v=Xc-2IS_2-tc )
//erstellen der PB´s
Code: |
for (int zeile = 0; zeile < 10; zeile++) { for (int spalte = 0; spalte < 10; spalte++) { Feld[zeile , spalte ].BackColor = Color.Black; Feld[zeile, spalte].AllowDrop = true; Feld[zeile , spalte ].Image = null; Feld[zeile, spalte].DragEnter += Spielfeld_Schiffe_setzen_DragEnter; Feld[zeile, spalte].Click += new EventHandler(Spielfeld_Schiffe_setzen_Click); Feld[zeile, spalte].DragDrop += Spielfeld_Schiffe_setzen_DragDrop; Feld[zeile, spalte].DoubleClick += new EventHandler(Spielfeld_Schiffe_setzen_DoubleClick); name++; } }
|
//meine SchiffPB´s sind in einer Groupbox
Code: |
GroupBox gb_schiffanzahl = new GroupBox(); gb_schiffanzahl.Location = new Point(550, 0); gb_schiffanzahl.Size = new Size(250, 400); gb_schiffanzahl.Text = "Schiffe"; gb_schiffanzahl.BackColor = Color.Transparent; gb_schiffanzahl.ForeColor = Color.Black; Controls.Add(gb_schiffanzahl);
#region Groupboxinhalt Label capture_zweier = new Label(); capture_zweier.Location = new Point(20, 20); capture_zweier.AutoSize = true; capture_zweier.ForeColor = Color.Black; capture_zweier.Text = "2er:";
gb_schiffanzahl.Controls.Add(capture_zweier);
PictureBox zweier = new PictureBox(); zweier.Location = new Point(20, 40); zweier.AutoSize = true; zweier.Image = Image.FromFile("2er.jpg"); zweier.MouseDown += MouseDown; gb_schiffanzahl.Controls.Add(zweier);
Label capture_dreier = new Label(); capture_dreier.Location = new Point(20, 110); capture_dreier.AutoSize = true; capture_dreier.Text = "3er"; capture_dreier.ForeColor = Color.Black; gb_schiffanzahl.Controls.Add(capture_dreier);
PictureBox dreier = new PictureBox(); dreier.Location = new Point(20, 130); dreier.AutoSize = true; dreier.Image = Image.FromFile("3er.jpg"); dreier.MouseDown += MouseDown; gb_schiffanzahl.Controls.Add(dreier);
Label capture_vierer = new Label(); capture_vierer.Location = new Point(20, 200); capture_vierer.AutoSize = true; capture_vierer.Text = "4er"; capture_vierer.ForeColor = Color.Black; gb_schiffanzahl.Controls.Add(capture_vierer);
PictureBox vierer = new PictureBox(); vierer.Location = new Point(20, 220); vierer.AutoSize = true; vierer.Image = Image.FromFile("4er.jpg"); vierer.MouseDown += MouseDown; gb_schiffanzahl.Controls.Add(vierer);
Label capture_fuenfer = new Label(); capture_fuenfer.Location = new Point(20, 290); capture_fuenfer.AutoSize = true; capture_fuenfer.Text = "5er"; capture_fuenfer.ForeColor = Color.Black; gb_schiffanzahl.Controls.Add(capture_fuenfer);
PictureBox fuenfer = new PictureBox(); fuenfer.Location = new Point(20, 310); fuenfer.AutoSize = true; fuenfer.Image = Image.FromFile("5er.jpg"); fuenfer.MouseDown += MouseDown; gb_schiffanzahl.Controls.Add(fuenfer);
|
//und das habe ich aus dem inet
Code: |
private void Spielfeld_Schiffe_setzen_DragDrop(object sender, DragEventArgs e) { PictureBox zielPos = (PictureBox)sender; zielPos.Image = (Image)e.Data.GetData(DataFormats.Bitmap); }
private void Spielfeld_Schiffe_setzen_DragEnter(object sender, DragEventArgs e) { e.Effect = DragDropEffects.Move; }
private void MouseDown(object sender, MouseEventArgs e) { PictureBox schiffauswahl = (PictureBox)sender; schiffauswahl.DoDragDrop(schiffauswahl.Image, DragDropEffects.Move); }
|
hoffe ich konnte mich halbwegs verständlich ausdrücken .
lg sam |