Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.11.2012, 12:36   #1
destroy_
Пользователь
 
Регистрация: 27.10.2012
Сообщений: 13
По умолчанию Delphi-canvas - нарисовать знак Ин-Янь

Нужно нарисовать инь ян (так как на картинке) используя канвас но вот беда у меня хрень получается какая то....
подскажите как рассчитывать положение и прочее и прочее.
Изображения
Тип файла: jpg инь.jpg (5.2 Кб, 234 просмотров)
destroy_ вне форума Ответить с цитированием
Старый 18.11.2012, 13:06   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
procedure draw_Yin_and_yang(canv: tcanvas; x, y, r: integer);
begin
  canv.Pen.Width := 2;
  canv.Pen.Color := clblack;
  canv.Brush.Color := clwhite;
  canv.Ellipse(x - r, y - r, x + r, y + r);
  canv.Arc(x - r, y - r div 2, x, y + r div 2, x - r, y, x, y);
  canv.Arc(x, y - r div 2, x + r, y + r div 2, x + r, y, x, y);
  canv.Ellipse(x - 3 * r div 4, y - r div 4, x - r div 4, y + r div 4);
  canv.Brush.Color := clblack;
  canv.Ellipse(x + 3 * r div 4, y - r div 4, x + r div 4, y + r div 4);
  canv.FloodFill(x, y - r div 2, clblack, fsBorder);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  draw_Yin_and_yang(form1.Canvas, 200, 150, 50);
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 20.11.2012, 06:01   #3
destroy_
Пользователь
 
Регистрация: 27.10.2012
Сообщений: 13
По умолчанию

за код конечно спасибо! но мне бы пояснения кода...и как рассчитывать положения?
destroy_ вне форума Ответить с цитированием
Старый 20.11.2012, 08:48   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
и как рассчитывать положения?
положение ГДЕ? для чего его рассчитывать?!
Куда Вы хотите поместить рисунок?
Чем положение в точке (200, 150) Вас не устраивает?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.11.2012, 21:30   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

destroy_, ну это не такая задачка, над которой нужно голову долго ломать.
Сначала выбираем те величины, которые хотели бы быстро изменять, чтобы рисовать картинку где угодно. Такими величинами являются центр рисунка и радиус.
Затем внимательно смотрим на рисунок, думаем, думаем, думаем и понимаем, что он состоит из 3 окружностей и 2 полуокружностей (дуг).
Осталась сама малость - прочитать, как работают эти методы.
Эллипс задается с помощью координат прямоугольника, описывающего его (эллипс).
Про дугу лучше прочитать в гугле
Чтобы понять, какие координаты писать, нужно на бумажке начать нарисовать картинку и высчитывать координаты в общем виде (не знаю, как лучше объяснить, это просто геометрия простейшая).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 26.11.2012, 18:30   #6
destroy_
Пользователь
 
Регистрация: 27.10.2012
Сообщений: 13
По умолчанию

теперь мне надо заставить её против часовой стрелки бегать по кругу... печаль меня озарила... этож совершенно по другому теперь надо делать
destroy_ вне форума Ответить с цитированием
Старый 26.11.2012, 19:31   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Если нужно именно перемещение картинки без вращения ее вокруг своей оси, то это совсем не сложно.
Update Вариант с вертящимся знаком (значительное усложнение формул)
Вложения
Тип файла: zip инь янь.zip (7.8 Кб, 70 просмотров)
Тип файла: zip инь янь 2.zip (8.4 Кб, 50 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 26.11.2012 в 20:30.
BDA на форуме Ответить с цитированием
Старый 01.12.2012, 16:01   #8
destroy_
Пользователь
 
Регистрация: 27.10.2012
Сообщений: 13
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Если нужно именно перемещение картинки без вращения ее вокруг своей оси, то это совсем не сложно.
Update Вариант с вертящимся знаком (значительное усложнение формул)
по заданию:
начальное расположение - верх-центр поверхности
рисования:
поверхность рисования квадратная:
движение - по окружности против часовой стрелки.

но вот то что ты скинул не компилируется... пишет ошибку
посмотри то что у меня получилось надо вот с размером угадать да и чтоб не было черного за фигурой
Вложения
Тип файла: rar 2.4.rar (165.9 Кб, 28 просмотров)

Последний раз редактировалось destroy_; 01.12.2012 в 16:12.
destroy_ вне форума Ответить с цитированием
Старый 01.12.2012, 20:15   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Во-первых, у меня нету черного за фигурой (см. скриншот)
Во-вторых, угадать с размерами чего?
В-третьих, что за ошибки? (у меня все компилируется - прикладываю обе программы)
Изображения
Тип файла: jpg прога.jpg (10.7 Кб, 134 просмотров)
Вложения
Тип файла: zip Projects.zip (737.5 Кб, 26 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 02.12.2012, 12:31   #10
destroy_
Пользователь
 
Регистрация: 27.10.2012
Сообщений: 13
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Во-вторых, угадать с размерами чего?
В-третьих, что за ошибки? (у меня все компилируется - прикладываю обе программы)
вот что за ошибка:
Error reading Forml.DoubleBuffered
но вроде я нашел в чем причина...
ну вот одно но: мне надо без кнопок вообще то есть только компильнул тут сразу и поехало.Используя size (а не самому задавать x,y,r ) и компонент image, там то и появляются проблемы

выше я не тот проект прикрепил
Вложения
Тип файла: zip Архив ZIP - WinRAR.zip (203.6 Кб, 31 просмотров)

Последний раз редактировалось destroy_; 02.12.2012 в 12:46.
destroy_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Необходимо нарисовать через Canvas треугольник, чтобы закрасить его заливкой потом?(C++ Builder) Женька Good Помощь студентам 1 26.09.2012 21:32
нарисовать эмблему колледжа в делфи, а именно через метод Canvas. Dogi Помощь студентам 2 15.05.2010 17:31
Знак ^ в delphi aruy Помощь студентам 15 14.08.2009 08:31
Как нарисовать точку в Canvas? Вадим Буренков Мультимедиа в Delphi 1 14.05.2009 17:41
Есть чат на яваскрипте.не могу поставит знак +;Хотя люди его как то ставят, просто мой знак + заменяется maksim1983 JavaScript, Ajax 4 23.02.2009 07:55