C# Object bewegen

Status
Niet open voor verdere reacties.

roboneter

Nieuwe gebruiker
Lid geworden
28 nov 2013
Berichten
4
Goedendag,

Ik heb een object dat op een vast punt ligt. Bijv (75, this.height - 70). Ik bereken doormiddel van de hoogte een aantal graden. Stel dat is 35 graden. Hoe kan ik mijn object. in dit geval een Picturebox in 35 graden omhoog laten schieten als het ware.

Alvast bedankt.
 
Kun je dat wat beter uitleggen? Wil je het animeren? draaien? Je hebt het vast goed in je hoofd, maar voor ons is het met deze informatie moeilijk voor te stellen wat je bedoeld.
 
Kun je dat wat beter uitleggen? Wil je het animeren? draaien? Je hebt het vast goed in je hoofd, maar voor ons is het met deze informatie moeilijk voor te stellen wat je bedoeld.

Het is heel simpel. Ik heb een picturebox. Die staat gewoon stil. dat is een bal en ik weet een hoek bijvoorbeeld 45 graden. Hoe kan ik zorgen dat die bal in een hoek van 45 graden de lucht in geschoten word.

De bal moet zegmaar in die hoek de lucht in vliegen met een X aantal pixels per miliseconde.
 
Laatst bewerkt:
animatie dus. Je kunt gewoon de x en y coordinaten van de picturebox aanpassen naar gelang de gegeven hoek. Let wel dat animaties gemaakt van UI objecten afhankelijk zijn van de "repaint" van je form en dus mogelijk schokkerig zullen zijn. Wil je dat niet zul je waarschijnlijk naar een canvas toe moeten.
 
animatie dus. Je kunt gewoon de x en y coordinaten van de picturebox aanpassen naar gelang de gegeven hoek. Let wel dat animaties gemaakt van UI objecten afhankelijk zijn van de "repaint" van je form en dus mogelijk schokkerig zullen zijn. Wil je dat niet zul je waarschijnlijk naar een canvas toe moeten.

De picturebox moet wel blijven vliegen in die hoek.. heb je een stukje voorbeeld code geven?
 
gebruik je forms of wpf? de benadering is namelijk nogal anders.
 
Code die een 2de button over het scherm schiet:

Code:
        private void button1_Click(object sender, EventArgs e)
        {
            Button2Pos();
            double hoek;
            try
            {
                hoek = Convert.ToDouble(textBox1.Text);
            }
            catch
            {
                hoek = -1;
            }
            if (hoek < 0 || hoek > 90)
            {
                MessageBox.Show("geen geldige hoek (0-90 graden)");
                return;
            }
            hoek = Math.PI * hoek / 180;
            long Cbreed = Convert.ToInt64(Form1.ActiveForm.Width) - 20;
            double xpos = 10;
            double ypos = label1.Location.Y - 40;
            long counter = 0;

            while (ypos > 10 && xpos < Cbreed)
            {
                counter++;
                counter++;
                xpos = 10 + Math.Cos(hoek) * counter;
                ypos = label1.Location.Y - 40 - Math.Sin(hoek) * counter;

                button2.Top = Convert.ToInt32(ypos);
                button2.Left = Convert.ToInt32(xpos);

                button2.Invalidate();
                button2.Refresh();
                
                System.Threading.Thread.Sleep(10);
            }
        }

        private void Button2Pos()
        {
            button2.Top = label1.Location.Y - 40;
            button2.Left = 10;
        }

Opzet: 1 form, met links onderin: 1 label (Label1), 1 invoerbox (TextBox1) en 1 button (button2). Ergens anders geplaatst nog een button (button2)

Code is grotendeels hetzelfde met een picturebox. Dit is zonder extra opleuking oid.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan