C++ (Qt)class Tile : public QGraphicsItem{public: Tile( const MapImage *mapImage, int x, int y ) void load(); void unload(); private: MapImage *m_mapImage; QImage *m_img; int m_x; int m_y;}; void Tile::load(){ m_img = m_mapImage->getTile( m_x, m_y ); update();} void Tile::unload(){ delete m_img; m_img = 0;}
C++ (Qt)QImage * MapImage::getTile(int x, int y){ // Возвращает один квадрат int kolW = stInfoHead.biWidth / divide; fseek(pInFile2, (divide * divide * 3 * (y * kolW + x)), SEEK_SET); fread(mas, sizeof(RGBTRIPLE), divide*divide, pInFile2); QImage *img = new QImage(divide, divide, QImage::Format_RGB32); QRgb rgb; for(int i = 0; i < divide; i++) for(int j = 0; j < divide; j++) { rgb = qRgb(mas[i][j].rgbtRed, mas[i][j].rgbtGreen, mas[i][j].rgbtBlue); img->setPixel(j, i, rgb); [color=red] // Вот тут тратится больше всего машинного времени[/color] } return img;}