Метод GR32_VectorUtils.Circle работает не так, как я ожидал - PullRequest
0 голосов
/ 03 января 2019

Я использую следующие блоки кода, чтобы нарисовать круг на точках TBitmap32 (x: 0, y: 0).

Pts := Circle(0,0,35);

PolylineFS(Bitmap32, Pts, clBlack32, True, 3);

Однако нарисованный круг рисуется за указанными координатами.Половина окружности находится в минус-координатах TBitmap32.

Pts := Circle(35,35,35);

Когда я пробую эту строку кода, координата x отрисовывается почти в правильной точке, а точка Yвсе еще не в правильной координате.

Я хочу, чтобы эта функция действовала как TCanvas.Ellipse.Я много чего пробовал, но у меня ничего не получилось.

1 Ответ

0 голосов
/ 03 января 2019

Код работает так, как задумано. Введенные вами координаты - это центр круга и радиус.

Естественно, если вы поставите 0 в качестве центра, то половина круга будет иметь отрицательные координаты. Решите вашу проблему, передавая координаты центра круга.


Я хочу, чтобы эта функция действовала как TCanvas.Ellipse.

Это не так, как работает программирование на сторонний интерфейс. Автор сторонней библиотеки выбирает интерфейс, и вы должны следовать ему. В этом случае автор библиотеки постановил, что вы должны указать центр круга. У вас нет выбора в этом вопросе. Вы должны следовать интерфейсу, который был определен автором библиотеки.

Если вы хотите указать координаты другим способом, вам нужно написать адаптер. Вы можете написать свой собственный код, который принимает координаты в форме, которую вы хотите использовать, и затем этот код преобразует ваши координаты в те, которые требуются для библиотеки.

...