Ускорение увеличения растрового изображения во втором растровом изображении с помощью наложения

Следующий код растягивает растровое изображение, смешивает его с существующим фоном, поддерживает прозрачную область первичной графики и затем отображает смесь в окне (imgScreen). Это прекрасно работает, когда уровень растяжения невелик или когда он фактически сокращает исходное растровое изображение. Однако при растяжении графики это очень медленно.

У меня ограниченный опыт работы с C ++ и с такой графикой, так что, возможно, есть еще один более эффективный способ сделать это. Размер первичного растрового изображения всегда квадратный. Любые идеи высоко ценятся ..!

Я собирался попытаться не отображать область отсечения, но из тестов кажется, что первоначальное растяжение вызывает замедление … Также возникают проблемы с просмотром, как вычислить необрезанную область … Рисование в элементах управления кажется бесполезным, но кажется единственным способом использовать встроенный в таких функциях, как stretchdraw и опция альфа-рисования.

std::auto_ptr<Graphics::TBitmap> bmap(new Graphics::TBitmap);
std::auto_ptr<Graphics::TBitmap> bmap1(new Graphics::TBitmap);

int s = newsize;
TRect sR = Rect(X,Y,X+s,Y+s);
TRect tR = Rect(0,0,s,s);
bmap->SetSize(s,s);
bmap->Canvas->StretchDraw(Rect(0, 0, s, s), Form1->Image4->Picture-
>Bitmap); // scale
bmap1->SetSize(s,s);
bmap1->Canvas->CopyRect(tR, Form1->imgScreen->Canvas, sR);  //background
bmap1->Canvas->Draw(0,0,bmap.get()); // combine
Form1->imgTemp->Picture->Assign(bmap1.get());
Form1->imgScreen->Canvas->Draw(X,Y, Form1->imgTemp->Picture->Bitmap,
alpha);

Отображается правильно, но по мере увеличения графика скорость прорисовки замедляется …

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]