FMX: сгладить несколько изображений - PullRequest
2 голосов
/ 30 марта 2012

В настоящее время я работаю над проектом с использованием фреймворка Firemonkey. В этом проекте TImageControl является родительским элементом, и его потомками будут несколько объектов TImage и, возможно, некоторые объекты TEdit.

То, что я хочу сделать, - это когда пользователь нажимает кнопку, он объединяет содержимое дочерних объектов TImage с содержимым родительского объекта TImageControl, чтобы сформировать сцену, которая затем будет сохранена в файл (и поэтому важно, чтобы относительное положение детей сохранялось в конечном изображении). С помощью свойства text дочерних элементов управления TEdit я хотел бы написать текст в каждом TEdit в той позиции, в которой он находится в родительском элементе, на конечном изображении.

Один из примеров того, чего я хочу добиться, похож на функцию «Свести изображение», используемую в Adobe Photoshop, где он возьмет все слои и сведет их в один слой. Это именно то, чего я хочу достичь. С текстом он просто выравнивается, как будто это обычный слой изображения, и вы теряете возможность редактировать текст (так как теперь это все один слой изображения).

Пока все, что я смог найти, это примеры VCL, использующие модуль JPEG. Теперь, хотя, конечно, можно было бы адаптировать такой код для работы с этим приложением Firemonkey (например, методом «MonkeyMixer»), мне было бы интересно узнать, есть ли более чистый метод для достижения этого, более родной для Firemonkey. Возможно, что-то вроде children as TImage?

Я открыт для изменения родителя TImageControl на другой тип компонента, если он более подходит, но мне нужно иметь возможность сохранить окончательное изображение в конце.

1 Ответ

2 голосов
/ 01 апреля 2012

Эта тема https://forums.embarcadero.com/thread.jspa?threadID=69764&tstart=30 предлагает:

var BMP: TBitmap;
 BMP := FireMonkeyObject.MakeScreenShot;
 BMP.SaveToFile('MyScreenShot.png');
 BMP.Free;

Плюс другие возможные решения. (Лично у меня нет опыта).

...