|
답변 감사합니다.
버퍼 지우기 전에 넣어봣는데 여전히 검정색의 잔상이 남아있네여.. 흠
MdispInquire(m_MilDisplay, M_KEY_COLOR, &TransparentColor);
Overlay는 프로그램을 종료하기 전에 Disable하고 있습니다.
//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormDestroy(TObject *Sender)
{
if(m_bFlagOverlayWorking){
MdispControl(m_MilDisplay, M_WINDOW_OVR_SHOW, M_DISABLE);
}
..............
//---------------------------------------------------------------------------
보리 님이 쓰신 글 :
: 하도 오래전에 써봐서 잘 모르겠지만, Overay가 Disable 된 상태에서 TransparentCOlor를 받아와서 그런가 아닌가 하는 생각이 드네요.
:
: 제일 마지막 줄의 버퍼 Clear전에
:
: MdispInquire(m_MilDisplay, M_KEY_COLOR, &TransparentColor);
:
: 를 넣어보는건 어떨까요?
:
:
:
: 왕초보 님이 쓰신 글 :
: : CCD영상도 잘 나오고 있고 OverLay로 영상 위에 원하는 도형까지 잘 그려는 지는데
: :
: : MbufClear(m_MilOverlayImage, TransparentColor);
: :
: : 를 하여도 그렸던 도형이 색만 검정색으로 바뀌고 영상위에 그대로 남아있습니다.
: :
: : 어떤 부분을 확인해 봐야 될까요?
: :
: : Mil 초기화 부분
: : //---------------------------------------------------------------------------
: : MappAlloc(M_DEFAULT, &m_MilApplication);
: :
: : MsysAlloc(M_DEF_SYSTEM_TYPE, M_DEF_SYSTEM_NUM, M_SETUP, &m_MilSystem);
: :
: : MdispAlloc(m_MilSystem, M_DEF_DISPLAY_NUM, M_DEF_DISPLAY_FORMAT, M_WINDOWED, &m_MilDisplay);
: :
: : if (MsysInquire(m_MilSystem, M_DIGITIZER_NUM, M_NULL) > 0){
: : MdigAlloc(m_MilSystem, M_DEV0, "NTSC.dcf", M_DEFAULT, &m_MilDigitizer);
: :
: : MdigInquire(m_MilDigitizer, M_SIZE_X, &BufSizeX);
: : MdigInquire(m_MilDigitizer, M_SIZE_Y, &BufSizeY);
: : MdigInquire(m_MilDigitizer, M_SIZE_BAND, &BufSizeBand);
: : }
: : else {
: : m_MilDigitizer = M_NULL;
: : BufSizeX = 640;
: : BufSizeY = 480;
: : BufSizeBand = 1;
: : }
: :
: : MbufAllocColor(m_MilSystem, BufSizeBand, 640, 480, M_DEF_IMAGE_TYPE,
: : (M_IMAGE+M_DISP+M_GRAB+M_PROC), &m_MilImage);
: :
: : MbufClear(m_MilImage,0);
: : //---------------------------------------------------------------------------
: :
: : Overlay 셋팅 부분
: : //---------------------------------------------------------------------------
: : MdispControl(m_MilDisplay, M_WINDOW_OVR_SHOW, M_DISABLE);
: :
: : MdispControl(m_MilDisplay, M_WINDOW_OVR_WRITE, M_ENABLE);
: :
: : MdispInquire(m_MilDisplay, M_WINDOW_OVR_BUF_ID, &m_MilOverlayImage);
: :
: : MdispInquire(m_MilDisplay, M_KEY_COLOR, &TransparentColor);
: :
: : MbufClear(m_MilOverlayImage, TransparentColor);
: :
: : MdispControl(m_MilDisplay, M_WINDOW_OVR_SHOW, M_ENABLE);
: :
: : MgraControl(M_DEFAULT, M_BACKGROUND_MODE, M_TRANSPARENT);
: : //---------------------------------------------------------------------------
: :
: : 영상 처리
: : //---------------------------------------------------------------------------
: : if (m_MilDigitizer){
: : MdigGrabContinuous(m_MilDigitizer, m_MilImage);
: : }
: : //---------------------------------------------------------------------------
: :
: : 직선 그리는 부분
: : //---------------------------------------------------------------------------
: : MgraColor(M_DEFAULT, M_RGB888(255, 0, 0));
: : MgraLine(M_DEFAULT, m_MilOverlayImage, vGeomPtOld.x, vGeomPtOld.y, vGeomPt.x, vGeomPt.y );
: : //---------------------------------------------------------------------------
: :
: : 지워주는 부분
: : //---------------------------------------------------------------------------
: : MbufClear(m_MilOverlayImage, TransparentColor);
: : //---------------------------------------------------------------------------
|