Я хочу, чтобы иметь возможность рисовать изображения в окне просмотра в моем плагине 3D Max, В GraphicsWindow Class есть функции для рисования 3d-объектов в окне просмотра, но эти вызовы рисования ограничены текущие области просмотра и графики. Это нежелательно, так как изображение, которое я хочу рисовать, должно всегда рисоваться независимо от того, какой графический режим используется в 3d max и/или аппаратное обеспечение, но я только рисую 2d-изображения, поэтому нет необходимости рисовать его в 3d-контексте.Как нарисовать изображения в viewport в Max SDK
Мне удалось получить HWND окна просмотра, а max sdk имеет функцию DrawIconButton();
и я попытался использовать эту функцию, но она не работает должным образом, изображение мерцает случайным образом с пользовательским взаимодействием, но исчезает, когда нет интерактивности. Я реализовал эту функцию в функции RedrawViewsCallback , однако функция DrawIconButton() не документирована, и я не уверен, что это правильный способ ее реализации.
Вот код, я использую для рисования изображения:
void Sketch_RedrawViewsCallback::proc (Interface * ip)
{
Interface10* ip10 = GetCOREInterface10();
ViewExp* viewExp = ip10->GetActiveViewport();
ViewExp10* currentViewport;
if (viewExp != NULL)
{
currentViewport = reinterpret_cast<ViewExp10*>(viewExp->Execute(ViewExp::kEXECUTE_GET_VIEWEXP_10));
} else {
return;
}
GraphicsWindow* gw = currentViewport->getGW();
HWND ViewportWindow = gw->getHWnd();
HDC hdc = GetDC(ViewportWindow);
HBITMAP bitmapImage = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_BITMAP1));
Rect rbox(IPoint2(0,0),IPoint2(48,48));
DrawIconButton(hdc, bitmapImage, rbox, rbox, true);
ReleaseDC(ViewportWindow, hdc);
ip->ReleaseViewport(currentViewport);
};
Добро пожаловать в StackOverflow. Пожалуйста, напишите код, который вы пробовали до сих пор, который не работает так, как вы ожидали. Если никто не знает, что вы пытаетесь сделать, довольно сложно помочь вам разобраться, как это сделать. –