2013-07-10 12 views
1

저는 Clarion (Clarion은 C++ 유형 언어) 프로그램 용 .NET DLL을 작성하고 있습니다. Clarion 프로그램은 .NET DLL 메서드를 호출하여 Clarion 이미지 컨트롤의 HWND를 전달합니다. .NET DLL에서 올바른 HWND를 가지고 있으므로 올바른 RECT (위쪽, 오른쪽, 아래쪽, 왼쪽)를 HWND에서 전달할 수 있습니다.HWND에 비트 맵 쓰기 (Clarion에서 HWND를 .NET DLL로 전달)?

.NET DLL에서 HWND에 비트 맵을 쓰고 있습니다. 클라리온 측에서는 단순히 이렇게 것이다 :

myImageControl? {PROP : ImageBits가} = ImageBytes ImageBytes 같은 파일 또는 클라리온 STRING 같은 바이트의 어레이이다

(고정 길이, 0이 아닌 종료).

미리 감사드립니다. Graphics.FromHwnd()을 :

+0

'HDC의 HDC =의 GetDC (HWND)'과'와 setPixel (HDC, X, Y, RGB (255,255,255)) ;'? 이것은 C++에서 Win32를 사용하지만 도움을 줄 수 있습니다 : http://www.falloutsoftware.com/tutorials/win/win3.htm 물론 BitBlt()는 더 빠를 것입니다 ... –

+0

고마워,하지만 어떻게해야하는지 알아야 해. C#에서 이것을하십시오. C#은 HDC, GetDC 등을 인식하지 못합니다. 아마도 C#을 인식 할 수있는 방법이있을 수 있지만 현재로서는 어떻게 해야할지 모르겠습니다. C++로 작성했다면 간단 할 것입니다. – RFM

+0

P/Invoke 또는 C++/CLI interop을 사용하십시오. 참조 : http://msdn.microsoft.com/en-us/library/aa288468%28v=vs.71%29.aspx –

답변

0

나는 당신이 시도 할 수 있다고 가정

Image image = new Bitmap("somefile.bmp"); 
using (Graphics g = Graphics.FromHwnd(intptrHwnd)) 
{ 
    g.DrawImage(image, new Point(0, 0)); 
} 

참조 : http://msdn.microsoft.com/en-us/library/system.drawing.graphics.fromhwnd.aspx

+0

위의 코드는 유효한 값을 대신 사용하고 모든 행은 오류없이 실행되지만 , 나는 그것의 주위에 잡아 당기기가있다, 아무 심상도 나타나지 않는다. 컨트롤은 Clarion IMAGE 컨트롤이며 핸들에서 C#으로 크기를 결정할 수 있습니다. 그 후 작동하지 않았다, 나는 클라리온 코드 DISPLAY (? ImageControl)를 추가하고 도움이되지 않았다. – RFM

+0

@RFM 포인트가 화면이나 창에 상대적인지 기억하려고합니다. 창을 표시 영역의 왼쪽 상단으로 이동하여 그 차이가 있는지 확인할 수 있습니까? –

+0

창을 왼쪽 상단으로 옮긴 다음 이미지를 그려야 이미지가 나타나지 않습니다. Clarion의 IMAGE 컨트롤이 표준 winforms 이미지 컨트롤이 아닌 경우도 있지만 문서를 찾지 못했습니다. 현재 콜백 (http://stackoverflow.com/questions/17578527/net-dll-needs-to-receive-a-clarion-callback-procedure-and-then-all-it-passing-t)을 사용하고 있습니다. Clarion에서 이미지를 표시 할 수 있지만 C#에서 이미지를 직접 표시 할 수는 있습니다. – RFM