لا والله ما استعملت top و left
حددت النقاط مباشرة ً عن طريق
كود PHP:
pointX.Location = new Point(x,y)
يعني عن طريق تعويض ال x,y مباشرة بعدما استخرجتهم من معادلة الحركة
السرعة كانت عبارة عن بارمتر الدالة sleep بعد ان عملت thread خاص
والوقت متغير عادي t++ لا تهم قيمته كثيرًا لأن الدوال cos,sin دوال ترجع على بعضها
بس انا مستغرب كيف تتحرك معاك الحركة ببطئ بدون timer او sleep
الكود اللي عملته:
كود PHP:
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;
using System.Threading;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private Thread t;
private int radius;
private int velocity;
private double omega;
public Form1()
{
radius = 50;
velocity = 1000;
omega = velocity / radius;
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
if (t!=null)
t.Abort();
}
private void button2_Click(object sender, EventArgs e)
{
t = new Thread(new ThreadStart(runMe));
t.Start();
}
public delegate void UpdateTextCallback(string message);
public void runMe()
{
double x = 0, y = 0,t=0;
while (true)
{
Thread.Sleep(velocity);
x = radius - radius*Math.Cos(omega * t);
y = radius * Math.Sin(omega * t);
t++;
try
{
pointX.BeginInvoke(new UpdateTextCallback(UpdateText), new object[] { x.ToString() + "," + y.ToString() });
}
catch (InvalidOperationException e)
{
}
}
}
private void UpdateText(string message)
{
int x, y;
string[] p = message.Split(new String[] { "," },StringSplitOptions.None);
x = Convert.ToInt16(Convert.ToDouble(p[0]))+20;
y = Convert.ToInt16(Convert.ToDouble(p[1]))+80;
pointX.Location = new Point(x,y);
}
}
}