Существует некоторое прикладное программное обеспечение, в котором мне нужно, чтобы базовые координаты для рисования GDI + находились в центре окна. В настоящее время я устанавливаю базовые координаты центра окна, затем сохраняю преобразование в матрице, чтобы восстановить его с помощью SetTransform(baseMatrix)
после некоторых локальных преобразований:
procedure TForm1.Paint();
var
g: TGPGraphics;
baseMatrix: TGPMatrix;
begin
inherited;
g := TGPGraphics.Create(Canvas.Handle);
baseMatrix := TGPMatrix.Create();
try
g.TranslateTransform(ClientWidth / 2, ClientHeight / 2);
g.GetTransform(baseMatrix);
//Do some drawing with transformations
//.....
//End of some drawing with transformations
g.SetTransform(baseMatrix);
//Do some drawing with transformations
//.....
//End of some drawing with transformations
g.SetTransform(baseMatrix);
finally
baseMatrix.Free();
g.Free();
end;
end;
Моя идея заключалась в том, чтобы использовать два TGPGraphics
, один основанный на другом. Первый будет использоваться для смещения базовых координат. Другой будет использоваться для рисования с возможностью восстановления базовых координат с помощью ResetTransform()
.
К сожалению, конструктор TGPGraphics
не принимает в качестве параметра другой TGPGraphics
.
Что лучшие практики для сохранения базовых координат?