/// Функция отрисовки карты (для Windows)
#ifdef Q_WS_WIN
void SubSahara::Draw(HDC hdc)
{
if(!bInit) return;
for(int y = begSize.y; y < spSize.y; y++)
{
SetDIBitsToDevice(hdc, ///< handle to DC
begSize.x, ///< x-coord of destination upper-left corner
y, ///< y-coord of destination upper-left corner
spSize.x, ///< source rectangle width
1, ///< source rectangle height
0, ///< x-coord of source lower-left corner
0, ///< y-coord of source lower-left corner
0, ///< first scan line in array
1, ///< number of scan lines
///< array of DIB bits
(CONST VOID *)(pDevice->GetSurface() + spSize.x * y),
pBmi, ///< bitmap information
DIB_RGB_COLORS);
}
}
#endif // Q_WS_WIN
pBmi - имеет тип BITMAPINFO
при использовании делается так:
/// Рисование в заданном виджете (trackView)
void TLV::paintEvent(QPaintEvent *events)
{
QPainter painter(this);
/// Рисование карты Мира Сахарой
int Xbeg = trackView -> x() + 10;
int yb = dockWidget -> y() + 10;
int Ybeg = (toolbarAction -> isChecked()) ? yb + toolBar -> height() + TLVClass::menuBar -> height()
: yb + TLVClass::menuBar -> height();
int Xend = trackView -> width();
int Yend = trackView -> height();
pSahara -> SetBitmapSize(Xbeg, Ybeg, Xend, Yend + Ybeg);
pSahara -> Refresh();
#ifdef Q_WS_WIN
pSahara -> Draw(painter.paintEngine() -> getDC());
#endif // Q_WS_WIN
QMainWindow::paintEvent(events);
}
Имеются определенные функции для получения массива QRgb. Задача заполнить область, в которой происходит рисование (по сути, виджет trackView), цветами из этого массива. Каким образом сделать массив заполнения этой области? Подскажите, пожалуйста, средства Qt какими можно это сделать и как сделать?
Заранее благодарен.