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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2019, 17:56   #1
Mihail90
 
Регистрация: 24.01.2018
Сообщений: 3
Восклицание [Pascal ABC.NET] Поворот рисунка

Всем доброго времени суток. У меня возникла проблема с поворотом рисунка (из файла). Я добавил рисунок в PascalABC, по следующему коду:
Код:
uses 
    GraphABC; 
var 
    pict: Picture; 
begin 
    pict := Picture.Create('<путь к файлу-рисунку>'); 
    pict.Draw(0, 0); 
end.
Как мне его повернуть рисунок на определенный заданный угол? Уже неделю мучаюсь с этой задачей. ПОМОГИТЕ ПОЖАЛУЙСТА!!!


_____
Код программы нужно выделять (форматировать) тегами [CODE] [/CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 26.02.2019 в 19:31.
Mihail90 вне форума Ответить с цитированием
Старый 27.02.2019, 09:50   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,811
По умолчанию

где-то тут на форуме такое уже обсуждалось. там был поворот не на 90, 180 и 270 градусов, а на произвольный угол. вот там-то и начинались проблемы с пустыми пикселями.
в задача считаем, что вращаем относительно верхнего левого угла рисунка.
задаёте угол поворота ф
находите пиксель с координатами x,y.
определяете его текущий угол фo = арктангенс (y/x)
определяете радиус-вектор пикселя r = корень(x*x + y*y)
к этому углу прибавляете ваш новый угол ф = фo + ф
и считаете новые координаты вашего нового повёрнутого пикселя:
x = r* косинус (ф)
y = r*синус (ф)
рисуете ваш новый пиксель в точке с координатами x,y
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 27.02.2019, 10:22   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Mihail90 Посмотреть сообщение
PascalABC.Net
вариант с поворотом системы координат не рассматривали?

Код:
uses ABCObjects,GraphABC;
 
var
  p: PictureABC;
 
begin
  //Coordinate.Origin := Window.Center;
  Coordinate.Origin := Point.Create(100,100);
  Coordinate.Angle := 45;
 
  p:= PictureABC.Create(0,0,'D:\temp\fnt1.png');
end.
или, что тоже самое, так:
Код:
uses GraphABC;
var 
    pict: Picture; 
begin
  Coordinate.Origin := Point.Create(100,100);
  Coordinate.Angle := 90;
  pict := Picture.Create('D:\temp\fnt1.png'); 
  pict.Draw(0, 0);  
end.

Последний раз редактировалось Serge_Bliznykov; 27.02.2019 в 10:25.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.03.2019, 15:54   #4
Mihail90
 
Регистрация: 24.01.2018
Сообщений: 3
По умолчанию

Спасибо, вроде работает!
Mihail90 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поворот фигуры на языке Pascal ABC Vladislav125 Помощь студентам 0 30.04.2017 17:53
подкиньте идею рисунка в turbo pascal mishammm Помощь студентам 6 04.02.2014 23:42
Поворот фигуры Pascal stas45rus Помощь студентам 10 13.05.2012 12:43
поворот изображения на форме (либо поворот файла с картинкой) mystiql Microsoft Office Access 2 21.06.2011 22:03
СИ поворот belii0987 Помощь студентам 2 23.06.2010 10:22