Перейти к содержанию
Fire Monkey от А до Я

RoschinSpb

Пользователи
  • Постов

    187
  • Зарегистрирован

  • Посещение

  • Победитель дней

    10

Весь контент RoschinSpb

  1. Поменять размер картинки можно путем изменения стиля. Вот результат: Можно пойти и традиционным путем и просто вставить в кнопку контрол TGlyph Если в каких-то стилях не отображается, или отображается не так красиво, как хотелось бы, то надо сообщить в QC. Проблема скорее всего в стиле. Возможно в него просто забыли добавить TGlyph. P.S. по предыдущему вопросу, что умолчательный размер картинки 16 рассчитан на кнопки умолчательного размера. Вот как это выглядит в VCL
  2. Может быть скриншот добавите? Что за видеокарта? Какая версия винды?
  3. Если случится так, что проект будет известным и успешным, то весьма вероятно скоро придет овчарка с милиционером чтобы проверить лицензионность всего ПО (прецеденты с маскишоу были). Если ваш проект будет широко популярен среди пары родственников, то не беспокойтесь ни кто за Вами черный воронок не вышлет, разве что муки совести будут посещать по ночам.
  4. Вообще всегда приходит либо KeyChar, либо Key. Вроде бы об этом написано в тут и тут. Key - это код виртуальной клавиши vkXXX. Он зависит от конкретной нажатой клавиши, при чем на разных платформах он приводится к виндовым эквивалентам. KeyChar - это символ который может быть изображен где-нибудь в поле ввода. Он зависит от текущего языка, раскладки, IME, способа ввода (в числе прочего можно использовать голосовой ввод) и еще неизвестно чего, короче его подставляет система по не известным в общем случае правилам. Сделано так специально, чтобы не путали и не пытались выводить в виде текста букву А, когда нажато сочетание клавиш Ctrl+A. Эти два параметра принципиально по разному обрабатываются.
  5. Ну... очень странно. Вот видео http://youtu.be/x9AiC9pmWfU А в прикрепленном файле проект Project1.zip
  6. Если мы растягиваем по ширине, то что-то мы должны обрезать. У Rectangle1 делаем ClipChildren = True А Image1 выравниваем по вертикали по центру Align = VertCenter В коде получаем масштаб исходя из ширины, а высоту ставим согласно полученного масштаба. В результате верхняя и нижняя части картинки может обрезаться. Если делать Align = Top, Bottom, то можно обрезать только нижнюю и только верхнюю часть картинки. Т. е. получается что-то типа этого object Rectangle1: TRectangle Align = Top ClipChildren = True Height = 150.000000000000000000 Margins.Left = 5.000000000000000000 Margins.Top = 5.000000000000000000 Margins.Right = 5.000000000000000000 Position.X = 5.000000000000000000 Position.Y = 5.000000000000000000 Width = 374.000000000000000000 object Image1: TImage MultiResBitmap = < item end> Align = VertCenter Height = 274.000000000000000000 Position.Y = -62.000000000000000000 Width = 374.000000000000000000 WrapMode = Stretch end end object Button1: TButton Align = Top Height = 44.000000000000000000 Position.Y = 155.000000000000000000 TabOrder = 1 Text = #1055#1086#1076#1075#1088#1091#1079#1080#1090#1100 Width = 384.000000000000000000 OnClick = Button1Click end procedure TForm1.Button1Click(Sender: TObject); var Scale: Single; begin if i=3 then i := 1 else i := i+1; Image1.BeginUpdate; try // Load image InStream := TResourceStream.Create(HInstance, 'Test_' + IntToStr(i), RT_RCDATA); try Image1.Bitmap.LoadFromStream(InStream); Scale := Image1.Width / Image1.Bitmap.Width; Image1.Height := Image1.Bitmap.Height * Scale; finally InStream.Free; end; finally Image1.EndUpdate; Invalidate; end; end;
  7. У TImage можно установить свойство WrapMode = Stretch. Оно будет растягивать изображение, правда без сохранения пропорций. Вам видимо придется самостоятельно изменить размеры TImage для сохранения пропорций. P.S. Кстати пользуясь случаем выкладываю ссылку на демо
  8. Когда вы загружаете картинку (в design time), то картинка подвергается изменениям. Обратите внимание на вторую строчку окна редактора IDE. Там по умолчанию выбрано Custom Size. Еще есть поля Width и Height Алгоритм работы при загрузке картинки в IDE примерно следующий: Если Width и Height равны 0 (по умолчанию), то эти размеры становятся равными размерам загруженной картинки поделенным на масштаб. Загружаемая картинка масштабируется таким образом чтобы соответствовать размерам Width и Height умноженным на текущий масштаб. Если картинка меньше, то она сжимается, если больше, то растягивается, а края заполняются прозрачным цветом. Все пиксели картинки которые имеют выбранный цвет TransparentColor заменяются на прозрачный черный цвет. Модифицированное таким образом изображение хранится в fmx-файле. Т.е. размеры хранящегося в fmx-файле изображения могут отличаться от размеров исходного изображения. Если вы захотите на кнопочку 16x16 поместить 10-мегапиксельную фотку, то в fmx-файле будет хранится изображение 16x16. А у Вас в примере масштабирования не происходит. Image1.Bitmap.LoadFromStream(InStream); Хранящееся изображение уже вписывается в границы TImage. Если оно меньше, то центрируется если больше, то сжимается с сохранением пропорций. В вашем примере в TImage вписывается исходное изображение из ресурса. Вы можете поместить TImage на другой контрол и установить у неё Width и Height нужных (заведомо меньших) размеров, и установить свойство Align в Center. Мне только не понятна целесообразность такого поведения. Получается в ресурсе хранятся лишние данные и всегда тратятся вычислительные ресурсы на масштабирование.
×
×
  • Создать...