Задать вопрос
@StartPy

Как мне построить фигуру по точкам, которые являются элементами массива?

<?php
// Создание пустого изображения
$image = imagecreatetruecolor(400, 300);

// Создание цвета полигона
$col_poly = imagecolorallocate($image, 255, 255, 255);

// Рисование многоугольника
imagepolygon($image, array(
        0,   0,
        100, 200,
        300, 200
    ),
    3,
    $col_poly);

// Вывод картинки в броузер
header('Content-type: image/png');

imagepng($image);
imagedestroy($image);
?>

С помощью этого кода мы создаем многоугольник. Но у меня проблема - мне надо построить многоугольник по точкам, которые мне неизвестны заранее, те пользователь вводит их в input на форме. Потом он нажимает на submit и я считываю их в массив array. Я пробовал сделать так, как в примере, те вот так:
<?php
$point = $_POST['point'];
$array=[];
$array=explode( ',', $name );
// Рисование многоугольника
imagepolygon($image, $array,
    3,
    $col_poly);
?>

PS Передавал 3 точки, что бы третий параметр в imagepolygon подходил, но не получилось
Как правильно сделать? Может быть как-то через foreach заносить данные в imagepolygon? Пробовал делать и без explode, не получилось
  • Вопрос задан
  • 124 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Вам нужно на странице с формой сделать столько пар полей ввода, сколько нужно для создания нужного количества точек и назвать поля так, чтобы скрипт получил их в виде массива, а также сделать дополнительное поле, в которое пользователь сможет ввести нужное количество точек. Пример ниже

figure.php
<?php

// Получение точек из $_POST
$points = $_POST['points'];

// Создание пустого изображения
$image = imagecreatetruecolor(400, 300);

// Создание цвета полигона
$col_poly = imagecolorallocate($image, 255, 255, 255);

// Рисование многоугольника
imagepolygon($image, $points, count($points) / 2, $col_poly);

// Вывод картинки в браузер
header('Content-type: image/png');

imagepng($image);
imagedestroy($image);

index.html
<?php
  $pointsCount = $_GET['points_count'];
  if ($pointsCount < 3) {
    $pointsCount = 3;
  }
?>
<form>
  <label for="points_count">
    Количество точек
  </label>
  <input type="number" min="3" value="<?= $pointsCount; ?>" name="points_count" id="points_count">
  <input type="submit" value="Изменить количество точек">
</form>
<form action="figure.php" method="POST">
  <?php for ($i = 1; $i <= $pointsCount; $i++): ?>
  <!-- Точка <?= $i; ?> -->
  <div>
    <label for="x<?= $i; ?>">
      X<sub><?= $i; ?></sub>:
    </label>
    <input type="number" min="0" name="points[]" id="x<?= $i; ?>">
    <label for="y<?= $i; ?>">
      Y<sub><?= $i; ?></sub>:
    </label>
    <input type="number" min="0" name="points[]" id="y<?= $i; ?>">
  </div>
  <?php endfor; ?>
  <div>
    <input type="submit" value="Нарисовать многоугольник">
  </div>
</form>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы