|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
27.02.2013, 20:24 | #1 |
Регистрация: 23.01.2013
Сообщений: 4
|
попиксельный поворот bitmap
Всем доброго времени суток хотел написать функцию которая вращает bitmap вокруг опорной точки,выбрал попиксельный поворот(а не setworldtransform и др. варианты) так как такую функцию будет лего переписать для поворота любого массива точек,но столкнулся с проблемкой,поворачивать поворачивает да вот не так как хотелось,взгляните свежим взглядом может что-то кинется в глаза.
Вот со-но код: #define min(a, b) (((a) < (b)) ? (a) : (b)) #define max(a, b) (((a) > (b)) ? (a) : (b)) #pragma hdrstop #include "Unit2.h" //----------------------------------------- Graphics::TBitmap* vRotate(int viAngle,int Xop,int Yop,Graphics::TBitmap *pFromBitmap=new Graphics::TBitmap) { Graphics::TBitmap *pToBitmap=new Graphics::TBitmap; int ngXop = (int)(Xop * sin((float)viAngle * M_PI / 180)), ngYop = (int)(Yop * cos((float)viAngle * M_PI / 180)); int nX = ngXop - Xop, nY = ngYop - Yop; pFromBitmap; float vfRradians=(2*3.1416*viAngle)/360; float vfCosinus=(float)cos(vfRradians); float vfSinus=(float)sin(vfRradians); pToBitmap->Height=pFromBitmap->Height; pToBitmap->Width=pFromBitmap->Width; for(int y = 0;y < pToBitmap->Height; y++) { for(int x=0;x<pToBitmap->Width;x++) { int pFromBitmapx=(int)((x)*vfCosinus+(y )*vfSinus); int pFromBitmapy=(int)((y)*vfCosinus-(x)*vfSinus); pFromBitmapx=pFromBitmapx-nX; pFromBitmapy=pFromBitmapy-nY; if(pFromBitmapx>=0&&pFromBitmapx<pF romBitmap->Width&&pFromBitmapy>=0&& pFromBitmapy<pFromBitmap->Height) { pToBitmap->Canvas->Pixels[x][y]= pFromBitmap->Canvas->Pixels[pFromBitmapx][pFromBitmapy]; } } } return pToBitmap; } #pragma package(smart_init) |
28.02.2013, 11:27 | #2 |
Форумчанин
Регистрация: 29.01.2013
Сообщений: 319
|
Поворачиваешь с угла, а надо от центра
|
14.03.2014, 17:32 | #3 |
Пользователь
Регистрация: 03.08.2012
Сообщений: 23
|
А если я хочу поворачивать относительно любой точки? Как правильно реализовать, чтобы все изменения правильно были отображены?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Поворот в BitMap | Victor1963 | Помощь студентам | 2 | 16.11.2011 12:49 |
поворот изображения на форме (либо поворот файла с картинкой) | mystiql | Microsoft Office Access | 2 | 21.06.2011 22:03 |
Попиксельный анализ цвета. | Локи | Общие вопросы Delphi | 13 | 01.04.2011 11:35 |
из-за чего появляется полоса (на скрине) при вставке BitMap в TImage? - Проблема с Bitmap | Grey@2009 | Мультимедиа в Delphi | 2 | 02.01.2010 20:23 |
Попиксельный доступ к TJPEGImage | Serge_Bliznykov | Общие вопросы Delphi | 4 | 29.09.2009 22:57 |