Нужно создать Preview для картинки и отобразить её в некоторой ограниченной области, ну или уменшить рисунок, ограничив его по вертикали и горизонтали сохранив пропоорции... Собственно нужен алгоритм расчёта размера сторон для масштабирования в определённый четырёхугольник =) З.Ы. В школе математику и геометрию не учил, помидоры не кидать Заранее благодарен за любую помощь
В школе с математикой дружил, поэтому делал когда то для PowerPC-проекта лин. интерполяцию: Код (Text): static inline unsigned short getColor(unsigned short c1, unsigned short c2) { int r1=c1&CSprite::fmt.rs, g1=c1&CSprite::fmt.gs, b1=c1&CSprite::fmt.bs; int r2=c2&CSprite::fmt.rs, g2=c2&CSprite::fmt.gs, b2=c2&CSprite::fmt.bs; //int r1=c1&0xf800, g1=c1&0x7e0, b1=c1&0x1f; //int r2=c2&0xf800, g2=c2&0x7e0, b2=c2&0x1f; int r = (r1+r2)>>1; int g = (g1+g2)>>1; int b = (b1+b2)>>1; return (unsigned short)(r|g|b); } static inline void DrawLinear(CSprite *pDst, int xDst, int yDst, int xsDst, int ysDst, CSprite *pSrc, int xSrc, int ySrc) { GASSERT(xDst+xsDst<=pDst->x && yDst+ysDst<=pDst->y); pDst->Lock(); int xsSrc=(xsDst>>1); int ysSrc=(ysDst>>1); for (int y1=ySrc, y2=yDst; y1<ysSrc; y1++, y2+=2) { unsigned short *src = (unsigned short *)&pSrc->bufColor[y1*pSrc->bpl]; unsigned short *dst = (unsigned short *)&pDst->bufColor[y2*pDst->bpl]; for (int x1=xSrc, x2=xDst; x1<xsSrc; x1++, x2+=2) { unsigned short c00 = src[x1], c01 = src[x1+1], c10 = src[x1+(pSrc->bpl>>1)], c11 = src[x1+(pSrc->bpl>>1)+1]; dst[x2] = c00; #ifdef NOINTERPOLATION dst[x2+1] = c00; dst[x2+pDst->y] = c00; dst[x2+1+pDst->y] = c00; #else dst[x2+1] = getColor(c00, c01); dst[x2+pDst->y] = getColor(c00, c10); dst[x2+1+pDst->y] = getColor(c00, c11); #endif // NOINTERPOLATION } } pDst->Unlock(); } маленькая картинка становилась большой в обратную сторону тоже самое.