Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: Mike от Август 10, 2007, 11:00



Название: Qt 4.3.1 Как можно рисовать зная контекст устройства
Отправлено: Mike от Август 10, 2007, 11:00
Есть такая задача: нужно рисовать, зная контекст устройства. Как это можно сделать?

Задача получилась таким образом: есть ActiveX для работы с картами Ингит. Делаю для него обертку с помощью dumpcpp, получается наследник от QAxWidget. Но любые попытки нарисовать на нем с помощью перекрытия paintEvent игнорируются, так как он туда даже не заходит. В самом ActiveX есть событие SelfDraw, его я отловить могу (с помощью сигналов), а в нем один из параметров - контекст устройства, на котором можно рисовать. Теперь как мне создать что-нить типа QPainter, чтобы я мог нормально на нем рисовать?


Название: Qt 4.3.1 Как можно рисовать зная контекст устройства
Отправлено: Mike от Август 13, 2007, 12:14
После долгих мучений получил такой вариант решения проблемы (может кому пригодится):
Код:
//hDC - контекст устройства типа HDC
HBITMAP hBmp = (HBITMAP)GetCurrentObject(hDC, OBJ_BITMAP);
QPixmap pixmap(QPixmap::fromWinHBITMAP(hBmp));
DeleteObject(hBmp);

QPainter painter(&pixmap);
// Здесь рисуем с помощью painter

hBmp = pixmap.toWinHBITMAP();
SelectObject(hDC, hBmp);
DeleteObject(hBmp);