我需要的
我需要获取 Firemonkey 组件的 DC TCanvas
。我需要它来使用无法通过 Firemonkey 访问的 Win API 绘图功能,主要是 100% 控制字体渲染。
显然,这是一个纯 Windows 应用程序,因此与 OSX 的任何兼容性都不是问题。
我做了什么
我设法获得了 TForm 的句柄并将其转换为 HWND,然后使用GetDC(FmxHandleToHWND(Handle));
这是控件的OnPaint
处理程序Character_PaintBox
。
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 中它不可能那么复杂,或者?