C# Как заполнить массив Point[] в цикле?

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
Привет! Прошу помощи:
есть такой код из справки:
Код:
Point[] points = new Point[10]
{
    new Point(100, 100),
    new Point(110, 110),
    new Point(120, 120),
    new Point(130, 130),
    new Point(140, 140),
    new Point(150, 150),
    new Point(160, 160),
    new Point(170, 170),
    new Point(180, 180),
    new Point(190, 190)
};
// create delay
int[] delay = new int[10] { 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 };
// perform the mouve move events
instance.ActiveTab.MouseMove(points, delay, false, false);

Как мне сделать тоже самое, но в цикле?
например:


Код:
Point[] points = new Point[]{};
int[] delay = new int[]{};

for (int tt=0; tt<100; tt++)
{
delay =  new int[tt] {rnd.Next(10, 20)};
points = new Point[tt]{new Point(x, y)};
}   
instance.ActiveTab.MouseMove(points, delay, false, false);
 
  • Спасибо
Реакции: orka13 и dio-dev

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
все, сам разобрался в синтаксисе... правильно так:

Код:
Point[] points = new Point[1000];
int[] delay = new int[1000];
for (int tt=0; tt<100; tt++)
{
   delay [tt]= (rnd.Next(10, 20));
   points [tt] = new Point(x, y);
} 
instance.ActiveTab.MouseMove(points, delay, false, false);
 
  • Спасибо
Реакции: dio-dev

doc

Client
Регистрация
30.03.2012
Сообщения
8 605
Благодарностей
4 596
Баллы
113
все, сам разобрался в синтаксисе... правильно так:

Код:
Point[] points = new Point[1000];
int[] delay = new int[1000];
for (int tt=0; tt<100; tt++)
{
   delay [tt]= (rnd.Next(10, 20));
   points [tt] = new Point(x, y);
}
instance.ActiveTab.MouseMove(points, delay, false, false);
работает?
 

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
да, прекрасно работает... а что, что-то не правильно?
вот эти формулы координаты формируют для "петелек"
Код:
x = (((1-tt)*(1-tt)*(1-tt)*x1) + (3*(1-tt)*(1-tt)*tt*x2) + (3*(1-tt)*tt*tt*x3) + (tt*tt*tt*x4));     
y = (((1-tt)*(1-tt)*(1-tt)*y1) + (3*(1-tt)*(1-tt)*tt*y2) + (3*(1-tt)*tt*tt*y3) + (tt*tt*tt*y4));
 
Последнее редактирование:

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
Вот рабочий код рисования рандомных петелек.
(на костылях правда :-))
вставить в кубик C#

Код:
Random rnd = new System.Random();

double x, x1, x2, x3, x4;
double y, y1, y2, y3, y4;

int x_mov=0;
int y_mov=0;
int height;
int width;
////////////////////////////////////////////
Tab tab = instance.MainTab;
Document doc = tab.MainDocument;
double t=0;
//////////////////////////////
Point[] points = new Point[15000];
int[] delay = new int[15000];
int qwerty=0;
/////////////////////////////////////
Point Point1 = instance.ActiveTab.FullEmulationMouseCurrentPosition;
height = doc.Height;
width  = doc.Width;

x1=rnd.Next(10,width);
x2=rnd.Next(10,width);
x3=rnd.Next(10,width);
x4=rnd.Next(10,width);

y1=rnd.Next(10,950);
y2=rnd.Next(10,950);
y3=rnd.Next(10,950);
y4=rnd.Next(10,950);
for (int ii=0; ii<10; ii++)  //кол-во повторений рандомных петелек
{
        x1=x4;
        x2=rnd.Next(10,width);
        x3=rnd.Next(10,width);
        x4=rnd.Next(10,width);

        y1=y4;
        y2=rnd.Next(10,1050);
        y3=rnd.Next(10,1050);
        y4=rnd.Next(10,1050);
      
        int del = rnd.Next(6,10); //задержки движения от точки к точке
        for (int tt=0; tt<50; tt++)
        {
            t = (System.Convert.ToDouble(tt))/50;
            qwerty++;              
            x = (((1-t)*(1-t)*(1-t)*x1) + (3*(1-t)*(1-t)*t*x2) + (3*(1-t)*t*t*x3) + (t*t*t*x4));      
            y = (((1-t)*(1-t)*(1-t)*y1) + (3*(1-t)*(1-t)*t*y2) + (3*(1-t)*t*t*y3) + (t*t*t*y4));
              
            x_mov= System.Convert.ToInt32(x);
            y_mov= System.Convert.ToInt32(y);          
          
            delay [qwerty]= (del);
            points [qwerty] = new Point(x_mov, y_mov);
        }
}
  
instance.ActiveTab.MouseMove(points, delay, false, false);
 
Последнее редактирование:

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
какие есть предложения по апгрейду этого кода?
 

sdsfwehbn

Новичок
Регистрация
07.12.2017
Сообщения
24
Благодарностей
16
Баллы
3
Кривые формируются по этим графикам на основе опорных точек (x1;y1, x2;y2, x3;y3, x4;y4)
так как беру точки рандомно, поэтому петельки иногда совсем не петельки :-)

 

pol007

Client
Регистрация
20.05.2014
Сообщения
122
Благодарностей
4
Баллы
18

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)