Как извлечь и заменить изображения PNG в TStyleBook

Я занимаюсь этим уже неделю, и я сдаюсь. Как вы извлекаете изображения PNG, встроенные в TStyleBook?

Я попробовал это подлинное решение, но получаю странный результат. Растровое изображение, показанное в моей форме при проектировании и во время выполнения, является TAniIndicator:

время выполнения

Когда я открою MultiResBitmap редактор моего TImage Я вижу две уменьшенные версии одного и того же изображения.

Я использовал этот код для сохранения растровых изображений:

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to Image1.MultiResBitmap.Count - 1 do
    Image1.MultiResBitmap.Items[i].Bitmap.SaveToFile(IntToStr(i) + '.png');
end;

И я получил два масштабированных изображения этого:

Извлеченное изображение

Так что же случилось? Как получилось, что изображение показывает одно, а другое спасает? И как я могу сохранить все изображения, чтобы я мог их редактировать? И что еще более важно, после редактирования, как я могу положить их обратно в мой TStyleBook?

1 ответ

Метод, описанный в SO Q&A, на который вы ссылались ( ссылка здесь), работает нормально для меня. Однако я могу также создать ошибку, которую вы видите, скопировав слишком много из файла стиля. Некоторые файлы стилей содержат несколько изображений, и, поскольку данные изображения в файле.style имеют длину в несколько страниц, можно легко рисовать линии за концом одного изображения и переходить к следующему. Когда вы затем копируете и вставляете в свой TImage, вы видите одно изображение, а затем сохраняете другое. Так как это ошибка c & p, я больше не исследовал, какое изображение показывается, а какое сохраняется и почему.

Для вашей реальной проблемы, редактируя изображение, используйте конструктор растровых изображений. Откройте файл.vsf или выберите, чтобы создать новый. В подменю File - New есть несколько альтернатив. После того, как стиль загружен или создан новый, Images в древовидном меню слева перечислены все встроенные изображения. С ExportКнопка в центре заголовка, вы можете сохранить все изображения в каталог по вашему выбору. После редактирования изображений вы можете использовать Update кнопка, в качестве альтернативы Deleteа также Add кнопок. Наконец, сохраните как файл.vsf или.style. По какой-то необъяснимой причине BSD может открывать только файлы.vsf, но может сохранять как.vsf, так и.style.


Редактировать: на основе вашего комментария, что у вас есть измененный стиль в книге стилей и вы не хотите создавать новый, вы можете сохранить стиль в книге стилей в файл.style. Из этого файла.style вы можете скопировать объект PNG в TImage (глядя на форму в текстовом режиме), а затем во время выполнения сохранить его в файл.png. После редактирования в редакторе изображений загрузите его в TImage (во время разработки) и скопируйте (в текстовом режиме форм) PNG как ресурс обратно в файл.style. Это что-то вроде хака, но если ничего другого...

Другие вопросы по тегам