Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Max SDK中将图像绘制到视口_Sdk_3d_Max_3dsmax - Fatal编程技术网

如何在Max SDK中将图像绘制到视口

如何在Max SDK中将图像绘制到视口,sdk,3d,max,3dsmax,Sdk,3d,Max,3dsmax,我希望能够在3d Max插件中向视口绘制图像, GraphicsWindow类具有在视口中绘制三维对象的函数,但这些绘制调用受当前视口和图形渲染限制的限制。 这是不可取的,因为无论3d max处于何种图形模式或使用何种硬件,都应始终绘制我要绘制的图像,而且我只绘制2d图像,因此无需在3d环境中绘制 我已经获得了视口的HWND,max sdk具有该功能 DrawIconButton() 我尝试过使用这个功能,但它不能正常工作,图像会随着用户的交互而随机闪烁,但在没有交互时会消失。 我已经在 Red

我希望能够在3d Max插件中向视口绘制图像, GraphicsWindow类具有在视口中绘制三维对象的函数,但这些绘制调用受当前视口和图形渲染限制的限制。 这是不可取的,因为无论3d max处于何种图形模式或使用何种硬件,都应始终绘制我要绘制的图像,而且我只绘制2d图像,因此无需在3d环境中绘制

我已经获得了视口的HWND,max sdk具有该功能 DrawIconButton()

我尝试过使用这个功能,但它不能正常工作,图像会随着用户的交互而随机闪烁,但在没有交互时会消失。 我已经在 RedrawViewScalBack函数,但是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);

};
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。请发布您迄今为止尝试过的代码,这些代码没有按照您的预期工作。如果没有人知道你想做什么,那么很难帮你弄清楚怎么做。