2013-08-20 6 views
3

내가 무엇을 필요로하는지

Firemonkey 구성 요소의 DC를 가져와야합니다. TCanvas. Firemonkey를 통해 액세스 할 수없는 Win API 드로잉 기능을 사용하려면 주로 글꼴 렌더링을 100 % 제어해야합니다.Firemonkey에서 TCanvas DC를 얻는 방법?

분명히, 이것은 순수한 Windows 응용 프로그램, 그래서 OSX 어떤 호환성은 문제가되지 않습니다. 내가

를 무슨 짓을

은 내가 TForm 클래스의 핸들을 잡아 다음이가 Character_PaintBox 제어를위한 OnPaint 핸들러 GetDC(FmxHandleToHWND(Handle));

으로 DC를 받고하는 HWND로 변환 할 수 있었다.

HWND hWND = FmxHandleToHWND(Handle); 
HDC hDC = GetDC(hWND); 
int x = PreviewBack_Rectangle->Position->X + Character_PaintBox->Position->X; 
int y = PreviewBack_Rectangle->Position->Y + Character_PaintBox->Position->Y; 

TextOut(hDC,x,y,L"Test",4); 

ReleaseDC(hWND,hDC); 

이것은 어떻게 양식의 DC이며 작성한 모든 내용은 다음 업데이트에서 덮어 씁니다.

이것은 VCL에서 쉬운 작업이었으며 Firemonkey에서 그렇게 복잡하지 않을 수 있습니까?

+0

Firemonkey에 대한 경험이 없지만 GDI 드로잉을 메모리 비트 맵으로 사용하고 firemonkey의 비트 맵이 더 잘 작동 하는지를 보여줍니다. – Eelke

답변

3

문제는 Firemonkey와 함께, 당신은 단지 하나의 장치 형태에 대한 상황 및 각 구성 요소하지 하나를 가지고있다. 구성 요소를 다시 그려야 할 때 폼 캔버스가 전달되지만 구성 요소 위치에 매핑 된 자르기 및 좌표가 전달됩니다. 이미 Windows에서 찾은 것처럼 컨텍스트를 얻고 언제든지 그릴 수 있지만 페인트 메서드에서 발생하는 일반적인 firemonkey 그림과 경쟁합니다.

TImage를 양식에 넣고 사용자 정의 도면을 그 위에 배치 할 수 있습니다. Firemonkey는 양식을 그리기가 필요할 때만 이미지를 다시 그려 넣습니다.

나는 당신이 MAC을 원하지만 다른 사람이 글을 읽는 사람이, 당신은 OSX의 그래픽 컨텍스트를 얻을 문맥이 페인트 방법 밖에 유효하지 않기 때문에 그것을 그릴 수 없기하지 않습니다 말했다 알고있다. 따라서 이미지 방법 만이 유일한 방법 일 것입니다. 이것은 아마도 Firemonkey가 단일 컨텍스트에서 작동하는 이유를 설명합니다.

+0

이 설명에 감사드립니다! 행동은 이제 훨씬 더 의미가 있습니다. 나는 시간이되면 그것을 시도 할 것입니다. –