Требуется разработать приложение, которое: 1.выводит график функции на экран; 2.анимирует построение строфоиды.
C первым заданием справился вроде
private void построитьToolStripMenuItem_Click(object sender, EventArgs e)
{
GraphPane pane = graph.GraphPane;
pane.XAxis.Title.Text = "Ось X";
pane.YAxis.Title.Text = "Ось Y";
pane.Title.Text = "График строфоиды";
// Создадим список точек
PointPairList list = new PointPairList();
const double a = Math.PI / 2.0;
// Заполняем список точек
for (double x = -0.9; x <= 0.9; x += 0.01)
{
double u = Math.Tan(x);
// добавим в список точку
list.Add(a * (u * u - 1) / (u * u + 1), a * u * (u * u - 1) / (u * u + 1));
}
// Создадим кривую с названием "Sinc",
// которая будет рисоваться голубым цветом (Color.Blue),
// Опорные точки выделяться не будут (SymbolType.None)
LineItem myCurve = pane.AddCurve("", list, Color.Green, SymbolType.None);
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
// В противном случае на рисунке будет показана только часть графика,
// которая умещается в интервалы по осям, установленные по умолчанию
graph.AxisChange();
// Обновляем график
graph.Invalidate();
}
График строит по нажатию, все в порядке Нужно настроить другую кнопку, чтобы была анимация построения Вот моя жалкая попытка Пытался методом DrawLine находить две точки и отрисовывать их а затем по таймеру переходить на следующие Куча ошибок в блоке с анимацией, подскажите
private void анимироватьToolStripMenuItem_Click(object sender, EventArgs e)
{
GraphPane pane = graph.GraphPane;
pane.XAxis.Title.Text = "Ось X";
pane.YAxis.Title.Text = "Ось Y";
pane.Title.Text = "График строфоиды";
Pen p = new Pen(Color.Blue, 5);
const double a = Math.PI / 2.0;
// Заполняем список точек
double x = -0.9; y, x0, y0;
x0 = -0.9;
y0 = 0;
do
{
double u = Math.Tan(x);
x = a * (u * u - 1) / (u * u + 1);
y = a * u * (u * u - 1) / (u * u + 1);
x += 0.01;
pane.DrawLine(p, x0, y0, x, y);
x0 = x;
y0 = y;
Sleep (0.001);
} while (x <= 0.9);
// Вызываем метод AxisChange (), чтобы обновить данные об осях.
// В противном случае на рисунке будет показана только часть графика,
// которая умещается в интервалы по осям, установленные по умолчанию
graph.AxisChange();
// Обновляем график
graph.Invalidate();
}
private void анимироватьToolStripMenuItem1_Click_1(object sender, EventArgs e)
{
GraphPane pane = graph.GraphPane;
pane.XAxis.Title.Text = ""; pane.YAxis.Title.Text = "";
pane.Title.Text = "Анимация графика строфоиды";
pane.CurveList.Clear();
// Создадим список точек
PointPairList list = new PointPairList();
const double a = Math.PI / 2.0;
// Заполняем список точек
for (double i = -0.9; i <= 0.9; i += 0.01)
{
double u = Math.Tan(i);
list.Add(a * (u * u - 1) / (u * u + 1), a * u * (u * u - 1) / (u * u + 1));
LineItem myCurve = pane.AddCurve("", list, Color.Red, SymbolType.None); // ВОТ ЗДЕСЬ СТАНДАРТНО ЗАПОЛНЯЮ ЛИСТ С ТОЧКАМИ И ВЫВОЖУ КРИВУЮ
myCurve.Line.IsSmooth = true; // сглаживание
Thread.Sleep(5); // ЗДЕСЬ ЗАДЕРЖКА ДЛЯ ПОСТЕПЕННОГО ПОЯВЛЕНИЯ ТОЧЕК
graph.Refresh(); // ВНИМАНИЕ ВАЖНО! МЕТОД graph.Invalidate(); НЕ ПРОКАТИТ, НУЖНО ИМЕННО РЕФРЕШ
}
graph.AxisChange();
graph.Invalidate();
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Товарищи, возникли некоторые вопросы по поводу runtime, связанные с именами переменных и проверкой их типов, однако для лучшего понимания распишу...
Добрый день у меня есть контекст Library, таблица BooksС помощью метода Load() я загружаю в Local данные и потом local привязываю к datagrid
Как в XAML прописать путь к картинке через EnvironmentCurrentDirectory