Как нарисовать круг программа

В этой главе мы увидим, как нарисовать круг в PDF-документе с помощью библиотеки iText.

Рисование круга на PDF

Вы можете создать пустой PDF-документ, создав экземпляр класса Document . При создании экземпляра этого класса вам необходимо передать объект PdfDocument в качестве параметра его конструктору.

Ниже приведены шаги, чтобы нарисовать круг в документе PDF.

Шаг 1: Создание объекта PdfWriter

Создайте экземпляр класса PdfWriter, передав строковое значение (представляющее путь, по которому вам нужно создать PDF), в его конструктор, как показано ниже.

Когда объект этого типа передается в PdfDocument (класс), каждый элемент, добавленный в этот документ, будет записан в указанный файл.

Шаг 2: Создание объекта PdfDocument

Создайте экземпляр класса PdfDocument, передав объект PdfWriter его конструктору, как показано ниже.

// Creating a PdfDocument PdfDocument pdfDoc = new PdfDocument(writer);

После создания объекта PdfDocument вы можете добавить различные элементы, такие как страница, шрифт, вложение файла и обработчик события, используя соответствующие методы, предоставляемые его классом.

Как нарисовать круг в скретч (Scratch)

Шаг 3: Создание объекта Document

Класс Document пакета com.itextpdf.layout является корневым элементом при создании самодостаточного PDF. Один из конструкторов этого класса принимает объект класса PdfDocument.

Создайте экземпляр класса Document , передав объект класса PdfDocument, созданный на предыдущих шагах, как показано ниже.

// Creating a Document Document document = new Document(pdfDoc);

Шаг 4: Создание объекта PdfCanvas

// Creating a new page PdfPage pdfPage = pdfDoc.addNewPage(); // Creating a PdfCanvas object PdfCanvas canvas = new PdfCanvas(pdfPage);

Шаг 5 Установка цвета

Установите цвет круга с помощью метода setColor () класса Canvas , как показано ниже.

// Setting color to the circle Color color = Color.GREEN; canvas.setColor(color, true);

Шаг 6: Рисуем круг

Нарисуйте круг, вызвав метод circle () в Canvas , как показано ниже.

// creating a circle canvas.circle(300, 400, 200);

Читайте также:
Программа как себя состарить

Шаг 7: Закрытие документа

Закройте документ с помощью метода close () класса Document , как показано ниже.

// Closing the document document.close();

пример

Сохраните этот код в файле с именем DrawingCircle.java .

Скомпилируйте и выполните сохраненный файл Java из командной строки, используя следующие команды.

javac DrawingCircle.java java DrawingCircle

После выполнения вышеуказанная программа создает документ PDF, отображающий следующее сообщение.

Object drawn on pdf successfully

Если вы проверите указанный путь, вы можете найти созданный PDF-документ, как показано ниже.

Источник: coderlessons.com

Как нарисовать круг на с++?

Здравствуйте. Нужно нарисовать круг в простом консольном проекте под ubuntu. Использую gcc. Погуглил, для решения такой задачи везде используют то windows.h то graphics.h, а вот gcc на это ругается. Подскажите пожалуйста как возможно решить эту проблему.

Как нарисовать круг нужного диаметра в ворде

  • Вопрос задан более трёх лет назад
  • 17730 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 6
Вот — простой способ:

#include #include // compile: // gcc -Wall -Wextra -Werror -lglut -lGL -lm -std=gnu99 -D_GNU_SOURCE opengl.c -o openglcircle #define _U_ __attribute__((__unused__)) // exit by ctrl+q or escape void keyPressed(unsigned char key, _U_ int x, _U_ int y) < int mod = glutGetModifiers(); // window = glutGetWindow() if(mod == GLUT_ACTIVE_CTRL key == ‘q’) exit(0); else if(key == 27) exit(0); >void DrawCircle(float cx, float cy, float r, int num_segments) < float theta = 2. * M_PI / (float)num_segments; float c, s, t, x = r, y = 0.; sincosf(theta, c); glBegin(GL_LINE_LOOP); for(int ii = 0; ii < num_segments; ii++)< glVertex2f(x + cx, y + cy); t = x; x = c * x — s * y; y = s * t + c * y; >glEnd(); > void display() < glClear(GL_COLOR_BUFFER_BIT); DrawCircle(0.,0.,0.5,100); glFlush(); >int main(int argc, char** argv)

А, извиняюсь, про С++ не заметил. Ну да ладно, все равно я С++ не знаю и знать не хочу!

P.S. А вот — чистая консолька:

#include #include #include char *drawCircle(int R, int geom) < if(R >200 || R < 1) return NULL; int S, i, Y = 2 * R + 2; if(geom) S = Y * (R + 1); else S = Y * (Y — 1); char *buf = malloc(S+1); if(!buf) return NULL; memset(buf, ‘ ‘, S); buf[S] = 0; for(i = Y-1; i < S; i+=Y) buf[i] = ‘n’; inline void DrawPixel(int x, int y)< if(geom)< if(y%2==0) buf[Y * y/2 + x] = ‘*’; >else < buf[Y * y + x] = ‘*’; >> // Bresenham’s circle algorithm int x = R; int y = 0; int radiusError = 1-x; while(x >= y)< DrawPixel(x + R, y + R); DrawPixel(y + R, x + R); DrawPixel(-x + R, y + R); DrawPixel(-y + R, x + R); DrawPixel(-x + R, -y + R); DrawPixel(-y + R, -x + R); DrawPixel(x + R, -y + R); DrawPixel(y + R, -x + R); y++; if (radiusError < 0)< radiusError += 2 * y + 1; >else < x—; radiusError += 2 * (y — x) + 1; >> return buf; > int main(int argc, char **argv) < int i, R; char *buf; for(i = 1; i < argc; i++)< if(!(buf = drawCircle(R = atoi(argv[i]), 1)))< printf(«Wrong parameter %sn», argv[i]); continue; >printf(«nCircle with R = %d:n%sn», R, buf); free(buf); buf = NULL; > return 0; >

Читайте также:
Как восстановить программу сбис

Алгоритм Брезенхэма, второй аргумент функции drawCircle задает поправку на геометрию терминала: если у вас вдруг в терминале высота буквы равна ширине, то пишите 0, если же высота в 2 раза больше ширины, пишите 1.

Источник: qna.habr.com

Рисование кругов и правильных многоугольников

Для рисования потребуется приложения AutoHotkey и специальный скрипт для него. Приложение предназначено для выполения макросов и привязки их к сочетаниям клавиш.
Автором подхода и скрипта является Falcon. Я переработал скрипт, чтобы его можно было применять без масштабирования и переноса полученного круга. Что позволило рисовать дороги и избавило от проблемы, когда перестало работать масштабирование с сохранением пропорций.

Предварительные шаги:

1) Скачать и установить приложения AutoHotkey

Не могу гарантировать долговременное хранение скрипта в общем доступе, поэтому прикладываю его код здесь. Достаточно сохранить этот код в текстовом файле с расширением .ahk

Alt+R рисование круга на основе трех точек
Alt+P Правильный многоугольник с заданным количеством вершин
Alt+ Left mouse button click — двойное нажатие для простого удаления вершин
GetSegmentLength(x1, y1, x2, y2)
return Sqrt((x1 — x2)**2 + (y1 — y2)**2)
GetRadius(a, b, c)
s := Sqrt(p*(p-a)*(p-b)*(p-c))
GetCenter(x1, y1, x2, y2, x3, y3, ByRef x0, ByRef y0)
A1 := x2 — x1

B1 := y2 — y1
C1 := (x2-x1)*(x2+x1)/2 + (y2-y1)*(y2+y1)/2
A2 := x3 — x1
B2 := y3 — y1
C2 := (x3-x1)*(x3+x1)/2 + (y3-y1)*(y3+y1)/2
x0 := (C1*B2 — C2*B1)/(A1*B2 — A2*B1)
y0 := (A1*C2 — A2*C1)/(A1*B2 — A2*B1)

DrawCircle(x, y, r, n)
pi = 3.1415926535898
beta0 := pi ; начальный угол (точнее угол последней точки)
beta := 2.*pi/n+beta0 ; угол в радианах
px := -1 * sin(beta)*r+x ; если поменять синус и косинус местами, будет рисовать в другую сторону
py := -1 * cos(beta)*r+y
click, %px%, %py%
beta0 := beta
;Рисование кругов на основе трёх точек
#IfWinActive Народная карта Яндекса
MouseGetPos, x1, y1
MsgBox Вторая точка
MouseGetPos, x2, y2
MsgBox Третья точка

Читайте также:
Как запустить программу на удаленном сервере

MouseGetPos, x3, y3
InputBox, n, Количество вершин
as := GetSegmentLength(x1, y1, x2, y2)
bs := GetSegmentLength(x1, y1, x3, y3)
cs := GetSegmentLength(x3, y3, x2, y2)
r := GetRadius(as, bs, cs)
с := GetCenter(x1, y1, x2, y2, x3, y3, x0, y0)
DrawCircle(x0, y0, r, n)
;Рисование правильных многоугольников
#IfWinActive Народная карта Яндекса
InputBox, n, Количество вершин
DrawCircle(860, 540, r, n)
;Двойной клик для удаления точки
#IfWinActive Народная карта Яндекса

LAlt hotkey doesn’t exist in current keyboard layout», убедитесь, что включена английская раскладка

  • Код скрипта ориентируется на название окна с Народной картой, чтобы не срабатывать в других приложениях и на других сайтах. Если Яндекс поменяет название страницы, нужно будет заменить его везде в скрипте, чтобы он снова заработал.
  • Точки контура намеренно расставляются с задержкой, чтобы Народная карта успевала корректно отрабатывать нажатия. Однако, если компьютер не столь шустрый или занят параллельно более важными делами, возможно, потребуется увеличить задержку. Найдите в коде строку «sleep, 150» и увеличьте значение задержки.
  • Первоначальный алгоритм по Alt+P заточен на размер окна и разрешение экрана 1920х1080. Если у вас иное разрешение экрана или нестандартный размер окна, придётся подправить скрипт в этом месте (250 — радиус окружности, 860 и 540 — центр окружности по горизонтали и вертикали соответственно)
  • Источник: yandex.ru

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru