【问题标题】:How to draw images to viewport in Max SDK如何在 Max SDK 中将图像绘制到视口
【发布时间】:2015-02-24 09:17:16
【问题描述】:

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

我已经设法获得视口的 HWND 并且 max sdk 具有该功能 绘制图标按钮();

我曾尝试使用此功能,但无法正常工作,图像会随着用户交互而随机闪烁,但在没有交互时会消失。 我已经在 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。请发布您迄今为止尝试过的代码,但它没有按您的预期工作。如果没有人知道您要做什么,那么很难帮助您弄清楚如何去做。

标签: sdk 3d max 3dsmax


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    可能完全重绘会解决问题。 ForceCompleteRedraw

    【讨论】:

      猜你喜欢
      • 2015-10-10
      • 1970-01-01
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      相关资源
      最近更新 更多