2011-12-28 2 views
1

3d Max 플러그인에서 뷰포트에 이미지를 그릴 수 있기를 원합니다. GraphicsWindow 클래스는 뷰포트에 3D 객체를 그리는 기능을 가지고 있지만 이러한 도면 호출은 현재 뷰포트 및 그래픽 렌더링 제한. 그래픽 모드 3d max가 사용되는지 또는 하드웨어가 사용되는지에 상관없이 그리려는 이미지가 항상 그려져 있어야하므로 바람직하지 않습니다. 또한 2D 이미지 만 그리기 때문에 3D 컨텍스트에서 그릴 필요가 없습니다.최대 SDK에서 뷰포트에 이미지를 그리는 방법

나는 뷰포트의 HWND를 얻을 수 있었고 max sdk는 함수를 가지고있다. DrawIconButton();

이 기능을 사용해 보았지만 제대로 작동하지 않아 이미지가 사용자 상호 작용으로 무작위로 깜박이지만 상호 작용이 없을 때 사라집니다. i 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); 

}; 
+0

StackOverflow에 오신 것을 환영합니다. 지금까지 시도한 코드는 예상대로 작동하지 않습니다. 아무도 당신이하려고하는 것을 모른다면, 당신이 그것을하는 방법을 이해하는 것을 돕는 것은 꽤 어렵습니다. –

답변

0

: 여기

내가 이미지를 그릴 사용하고있는 코드입니다 대화 상자.

관련 문제