|
DC를 가져오는 부분을 수정해 보세요
Form1->hDC 가 뭔지 정확히 모르겟네요
HDC(Form1->hDC); 이것 대신 GetDC(Form1->Handle); 로 HDC를 가져오고
ReleaseDC하시면 문제없을것입니다.
//------------------------------------------------
Graphics::TCanvas *pCanvas = new Graphics::TCanvas();
Graphics::TBitmap *pSymbol = new Graphics::TBitmap();
pCanvas->Handle = GetDC(Form1->Handle);// ==> 수정한 부분 HDC(Form1->hDC);
pSymbol->Transparent = true;
pSymbol->LoadFromFile("C:\\temp.bmp");
pCanvas->Draw(0, 0, pSymbol);
ReleaseDC(this->Handle, pCanvas->Handle);
delete pCanvas;
delete pSymbol;
커트 님이 쓰신 글 :
: 답변 감사합니다.
: 하지만 일러주신 ReleaseDC를 해도 GDI개체가 증가를 하네요..ㅠㅠ
: 뭔가 다른것이 있는지??
:
:
: 장성호 님이 쓰신 글 :
: : DC를 릴리즈 해주셔야 됩니다.
: :
: : ReleaseDC(Form1->Handle, pCanvas->Handle);
: : delete pCanvas;
: : delete pSymbol;
: :
: :
: : 커트 님이 쓰신 글 :
: : : 화면상에 그림을 그릴때마다 GDI개채가 계속 증가합니다.(10000개가 되면 프로그램 죽어버리네요..ㅜㅜ)
: : : 그림을 그리고 해제를 해야하는데 계속 증가하네요. 1분주기로 계속적인 드로잉 작업이 실행되는데 GDI개채는 계속
: : : 증가만...ㅠㅠ
: : : GDI개채 증가를 막을 수 있는 방법좀 가르쳐 주세요.... 4일에 한번씩 프로그램 리셋하고 있습니다...
: : :
: : : void TCTRWM001M1::CtrSymbolDisplay(long x, long y)
: : : {
: : : // Form에 ActiveX가 올라가있기때문에 가상의 캔버스를 생성했습니다.
: : : Graphics::TCanvas *pCanvas = new Graphics::TCanvas();
: : : Graphics::TBitmap *pSymbol = new Graphics::TBitmap();
: : : pCanvas->Handle = HDC(Form1->hDC);
: : : pSymbol->Transparent = true;
: : :
: : : pSymbol->LoadFromFile("../mmd/image/rightyellow.bmp");
: : : pCanvas->Draw(x, y, pSymbol);
: : :
: : : // 이렇게만 삭제하는게 아닐듯 싶은데...
: : : delete pCanvas;
: : : delete pSymbol;
: : : }
|