如何在Max SDK中将图像绘制到视口
我希望能够在3d Max插件中向视口绘制图像, GraphicsWindow类具有在视口中绘制三维对象的函数,但这些绘制调用受当前视口和图形渲染限制的限制。 这是不可取的,因为无论3d max处于何种图形模式或使用何种硬件,都应始终绘制我要绘制的图像,而且我只绘制2d图像,因此无需在3d环境中绘制 我已经获得了视口的HWND,max sdk具有该功能 DrawIconButton() 我尝试过使用这个功能,但它不能正常工作,图像会随着用户的交互而随机闪烁,但在没有交互时会消失。 我已经在 RedrawViewScalBack函数,但是DrawIconButton()函数没有文档记录,我不确定这是否是实现它的正确方法 以下是我用来绘制图像的代码:如何在Max SDK中将图像绘制到视口,sdk,3d,max,3dsmax,Sdk,3d,Max,3dsmax,我希望能够在3d Max插件中向视口绘制图像, GraphicsWindow类具有在视口中绘制三维对象的函数,但这些绘制调用受当前视口和图形渲染限制的限制。 这是不可取的,因为无论3d max处于何种图形模式或使用何种硬件,都应始终绘制我要绘制的图像,而且我只绘制2d图像,因此无需在3d环境中绘制 我已经获得了视口的HWND,max sdk具有该功能 DrawIconButton() 我尝试过使用这个功能,但它不能正常工作,图像会随着用户的交互而随机闪烁,但在没有交互时会消失。 我已经在 Red
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);
};
void Sketch\u重画视图scallback::proc(接口*ip)
{
Interface10*ip10=GetCOREInterface10();
ViewExp*ViewExp=ip10->GetActiveViewport();
ViewExp10*当前视口;
if(viewExp!=NULL)
{
currentViewport=reinterpret_cast(viewExp->Execute(viewExp::kEXECUTE_GET_viewExp_10));
}否则{
返回;
}
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、位图图像、rbox、rbox、true);
ReleaseDC(视口窗口,hdc);
ip->ReleaseViewport(当前视口);
};
我找不到直接绘制到“查看端口”窗口的方法,但是我使用了一个透明的无模式对话框解决了这个问题。可能是一个完整的重画将解决这个问题 欢迎来到StackOverflow。请发布您迄今为止尝试过的代码,这些代码没有按照您的预期工作。如果没有人知道你想做什么,那么很难帮你弄清楚怎么做。