C++Builder
Начало
Форум
Помощь
Войти
Регистрация
C++Builder
>
Forum
>
Вопросы программирования
>
Общие вопросы программирования в C++Builder
>
Поворот картинки
Страниц: [
1
]
Вниз
Печать
Автор
Тема: Поворот картинки (Прочитано 1712 раз)
Sergey1985
Участник
Сказали спасибо: +8/-1
Offline
Сообщений: 310
Поворот картинки
«
:
27 Март 2014, 13:12:09 »
И еще маленький вопросик картинка не поворачивается
int x0,y0;
Graphics::TBitmap *SrcBitmap = new Graphics::TBitmap;
Graphics::TBitmap *DestBitmap = new Graphics::TBitmap;
SrcBitmap->LoadFromFile("MYPICTURE.bmp");
DestBitmap->Height = SrcBitmap->Width;
DestBitmap->Width = SrcBitmap->Height;
x0 = SrcBitmap->Width/2.;
y0 = SrcBitmap->Height/2.;
XFORM xform;
double angle = StrToFloat(Form1->Edit1->Text)*M_PI/180.;
double s = sin(angle);
double c = cos(angle);
xform.eM11 = xform.eM22 = c;
xform.eM12 = s;
xform.eM21 = -s;
xform.eDx = x0 - x0*xform.eM11 - y0*xform.eM21;
xform.eDy = y0 - x0*xform.eM12 - y0*xform.eM22;
SetGraphicsMode(DestBitmap->Canvas->Handle, GM_ADVANCED);
SetWorldTransform(DestBitmap->Canvas->Handle,&xform);
BitBlt(DestBitmap->Canvas->Handle,0,0,DestBitmap->Width,
DestBitmap->Height, SrcBitmap->Canvas->Handle,
0,0,SRCCOPY);
xform.eM11 = xform.eM22 = 1;
xform.eM12 = xform.eM21 = xform.eDx = xform.eDy = 0;
Image1->Canvas->Draw(0,0, DestBitmap);
delete DestBitmap;
delete SrcBitmap;
Записан
POV
Участник
Сказали спасибо: +107/-7
Offline
Сообщений: 640
Re: Поворот картинки
«
Ответ #1 :
27 Март 2014, 15:11:45 »
я делал с помощью GDI+
https://cbuilder.ru/index.php/topic,8926.0.html
Записан
Sergey1985
Участник
Сказали спасибо: +8/-1
Offline
Сообщений: 310
Re: Поворот картинки
«
Ответ #2 :
27 Март 2014, 16:21:16 »
а что это за расширение такое emf
Записан
POV
Участник
Сказали спасибо: +107/-7
Offline
Сообщений: 640
Re: Поворот картинки
«
Ответ #3 :
28 Март 2014, 08:31:14 »
метафайл.. вектор.. Но ровно так же (только тип картинки указывается другой) все делается для растра. Ничего "действенного" изменять не надо.
Мне нужно было именно с файлом работать, но никто не мешает работать с картинкой в памяти.
Если какие вопросы по GDI+ есть, то все аналогичные вопросы новичка я тут задавал, поиском ищется. Также много чего есть по первой строчке из результатов яндекса:
http://www.rsdn.ru/article/gdi/gdiplus1.xml
«
Последнее редактирование: 28 Март 2014, 13:27:20 от POV
»
Записан
gen
Участник
Сказали спасибо: +28/-0
Offline
Сообщений: 52
Re: Поворот картинки
«
Ответ #4 :
28 Март 2014, 12:36:53 »
Если используемый код поворота не принципиален, то могу предложить найденный где-то в закромах Инета работающий проект, демонстрирующий поворот с использованием scanline
Записан
Sergey1985
Участник
Сказали спасибо: +8/-1
Offline
Сообщений: 310
Re: Поворот картинки
«
Ответ #5 :
30 Март 2014, 09:21:38 »
Ответ такой
Graphics::TBitmap*b;
Graphics::TBitmap*b2;
b=new Graphics::TBitmap;
b2=new Graphics::TBitmap;
b2->LoadFromFile("MYPICTURE.bmp");
//TXForm xf = {1,0,0,1,100,100};
TXForm xf;
int x0,y0;
x0 = Image1->Width/2;
y0 = Image1->Height/2;
double angle = StrToFloat(Form1->Edit1->Text)*M_PI/180.;
double s = sin(angle);
double c = cos(angle);
xf.eM11 = xf.eM22 = c;
xf.eM12 = s;
xf.eM21 = -s;
xf.eDx = x0 - x0*xf.eM11 - y0*xf.eM21;
xf.eDy = y0 - x0*xf.eM12 - y0*xf.eM22;
b->Width=200;
b->Height=200;
SetGraphicsMode(b->Canvas->Handle, GM_ADVANCED);
SetWorldTransform(b->Canvas->Handle, &xf);
b->Canvas->Draw(0, 0, b2);
ModifyWorldTransform(b->Canvas->Handle, &xf, MWT_IDENTITY);
Image1->Canvas->Draw(0, 0, b);
delete b;
delete b2;
Но крутит все равно не важно
Записан
Страниц: [
1
]
Вверх
Печать
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Вопросы программирования
-----------------------------
=> Общие вопросы программирования в C++Builder
=> Программирование с FMX
=> Работа с базами данных в C++Builder
=> Windows API
=> Технологии COM/DCOM, ActiveX
=> Аспекты и идеология профессиональной разработки ПО
=> Компьютерное железо и системное администрирование
=> студенческий городок
-----------------------------
Обсуждение материалов на сайте
-----------------------------
=> Обсуждений статей на сайте
=> Обсуждение материалов из файлового архива
=> Компоненты сторонних разработчиков к С++Builder
-----------------------------
Работа сайта и новости
-----------------------------
=> Ищу/предлагаю работу
=> Новости из мира программирования
=> Новости - события календаря
=> Голосования
=> Компьютерный юмор и приколы
=> Работа сайта
=> Флейм
-----------------------------
FAQ - частозадаваемые вопросы/ответы
-----------------------------
=> FAQ, общие вопросы, посвящённые C++Builder
=> FAQ, вопросы по базам данных
=> FAQ, вопросы по компонентам
Загружается...