首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Max SDK中将图像绘制到视区

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

Stack Overflow用户
提问于 2011-12-28 17:35:32
回答 2查看 778关注 0票数 1

我希望能够在我的3DMAX插件中绘制图像到视口中,GraphicsWindow类有在视口中绘制3d对象的函数,但这些绘制调用受到当前视口和图形渲染限制的限制。这是不可取的,因为我想要绘制的图像总是应该被绘制,无论3d max是在什么图形模式下,或者使用硬件,而且我只绘制2d图像,所以没有必要在3d上下文中绘制它。

我已经设法获得了视口的HWND,并且max sdk有函数DrawIconButton();

我试过使用这个功能,但它不能正常工作,图像在用户交互时随机闪烁,但当没有交互时就消失了。我已经在RedrawViewsCallback函数中实现了这个函数,但是DrawIconButton()函数没有文档记录,我不确定这是否是实现它的正确方法。

下面是我用来绘制图像的代码:

代码语言:javascript
复制
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);

};
EN

回答 2

Stack Overflow用户

发布于 2011-12-30 23:29:56

我无法找到直接绘制到视口窗口的方法,但是我已经通过使用透明的无模式对话框解决了这个问题。

票数 0
EN

Stack Overflow用户

发布于 2015-02-24 09:17:17

也许完全重绘就能解决这个问题。ForceCompleteRedraw

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8654131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档