Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi: FireMonkey

Войти
Регистрация
Восстановить пароль
 
 
nikola129
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 33
#1

Прямоугольник на Timage - Delphi FireMonkey

09.12.2017, 08:44. Просмотров 404. Ответов 15
Метки нет (Все метки)

В FMX yет кнопки, на которую можно разместить картинку. Для 45 кнопок использовал Timage размещенных на TGridPanelLayout.

Все работает. Решил сделать окантовку прямоугольником. При одном разрешении все как надо, а при другом вместо прямоугольников что-то вроде буквы Г.

То есть прямоугольник уходит за пределы Timage вправо и вниз.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Var
  i: Integer;
  cw, ch: Integer;
  MyRect: TRectF;
  Rs: TResourceStream;
begin
  For i := 1 to 45 do
  begin
    Rs := TResourceStream.Create(hInstance, ris[i], RT_RCDATA);
    cmd[i]^.Bitmap.LoadFromStream(Rs); // Размещаю картинку
    Rs.Free;
    cw := round(cmd[i]^.Width);
    ch := round(cmd[i]^.Height);
    MyRect := TRectF.Create(1, 1, cw - 2, ch - 2);
    cmd[i]^.Bitmap.Canvas.BeginScene; // контур - прямоугольник
    cmd[i]^.Bitmap.Canvas.Stroke.Color := TAlphaColorRec.Black;
    cmd[i]^.Bitmap.Canvas.StrokeThickness := 2; // ширина линии
    cmd[i]^.Bitmap.Canvas.DrawRect(MyRect, 0, 0, AllCorners, 1);
    cmd[i]^.Bitmap.Canvas.EndScene;
  end;
end;
cmd - массив из TImage.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2017, 08:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Прямоугольник на Timage (Delphi FireMonkey):

Мерцание компонента Timage и перемещение Timage при нажатии - Delphi
Здравствуйте! Помогите убрать мерцание компонента Timage при изменении размера. Нашел в поиске, советуют так: procedure...

Перекрытие TImage - Delphi FireMonkey
Delphi xe5 Динамически создаются картинки, при наложении из друг на друга при этом видно последнюю созданную картинку. Как можно...

Timage и Firemonkey - Delphi FireMonkey
Собственно интересует как заменить rgb цвет на transparent. С vcl проблем небыло а тут возникли.

Свойства TImage - Delphi FireMonkey
Добрый день. За сегодня не в первый раз обращаюсь сюда за помощью - материала в интернете немного. Я хотел спросить,как в компоненте TImage...

Прозразчный TImage - Delphi
Добрый день, В форме, создаю объекты типа TPanel, мне нужно соиденить их между собой линиями. Делаю это с помощью TImage (использую...

Событие запуска Timage - Delphi
Здравствуйте! Нужно событие запуска Timage Спасибо за внимание!Думою вопрос понятен :)

15
TAZAQ
101 / 100 / 35
Регистрация: 28.01.2014
Сообщений: 305
09.12.2017, 16:38 #2
Цитата Сообщение от nikola129 Посмотреть сообщение
В FMX yет кнопки, на которую можно разместить картинку
Не совсем так, в FMX почти на любой компонент можно наложить TImage, хоть на Button, хоть SpeedButton
0
nikola129
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 33
09.12.2017, 17:25  [ТС] #3
Накладывал и на TButton. Нужно изобразить рамку. Прчем она должна менять цвет. Можно каждую каптинку продублировать с рамками разного цвета. Как быть в этом случае?
0
TAZAQ
101 / 100 / 35
Регистрация: 28.01.2014
Сообщений: 305
09.12.2017, 18:37 #4
nikola129, Тогда накладывайте не TImage, а TRectangle, у него сделайте фон пустым, а цветом рамки управляйте Rectangle.Stroke.Color, толщина рамки там же
0
nikola129
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 33
09.12.2017, 20:02  [ТС] #5
TAZAQ, могли бы заметить, что я так и делал. Не понятно, почему прямоугольник не умещается. При этом Widh у них больше Bitmap.Wifh. Bitmap.Wifh равен ширине рисунка. А сам рисунок растягивается во весь размер кнопки.

Добавлено через 15 минут
Кстати, как использовать в FMX TRectangle?
0
TAZAQ
101 / 100 / 35
Регистрация: 28.01.2014
Сообщений: 305
09.12.2017, 20:33 #6
Цитата Сообщение от nikola129 Посмотреть сообщение
могли бы заметить, что я так и делал
В каком месте? Регион и компонент немного разные вещи
Цитата Сообщение от nikola129 Посмотреть сообщение
Не понятно, почему прямоугольник не умещается. При этом Widh у них больше Bitmap.Wifh. Bitmap.Wifh равен ширине рисунка. А сам рисунок растягивается во весь размер кнопки
Смотрите свойства у TImage
Цитата Сообщение от nikola129 Посмотреть сообщение
Кстати, как использовать в FMX TRectangle
Кинуть на кнопку
0
nikola129
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 33
10.12.2017, 10:25  [ТС] #7
Посмотрите мой эксперимент. На эмуляторе и планшете нормально, а на телефоне половина прямоугольника.
0
Вложения
Тип файла: zip timage.zip (63.3 Кб, 3 просмотров)
krapotkin
3259 / 2899 / 790
Регистрация: 14.04.2014
Сообщений: 14,075
Записей в блоге: 13
10.12.2017, 12:11 #8
потому что Image и Bitmap внутри image это не одно и то же ))
у них размеры-то разные
поэтому воспользуйтесь нормальный способом - вкладывать в грид TRectangle
0
nikola129
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 33
10.12.2017, 18:03  [ТС] #9
Меня удивило, что Bitmap внутри image оказался, раньше такого не замечал. С Timage ничего не выйдет?
Да, чем дальше в лес, тем толще партизаны.
Пробую TRectangle.

Добавлено через 24 минуты
А можете на моем примере показать замену Timage на TRectangle?
0
krapotkin
3259 / 2899 / 790
Регистрация: 14.04.2014
Сообщений: 14,075
Записей в блоге: 13
11.12.2017, 11:42 #10
Delphi
1
2
3
4
r:=TRectangle.Create(NIL);
r.parent := gridlay1;
r.stroke.width:=2;
r.stroke.color:=TAlphaColorRec.White;
+
http://www.fmxexpress.com/trectangle...droid-and-ios/
0
nikola129
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 33
11.12.2017, 16:40  [ТС] #11
Спасибо Вчера поместил Timage на TRectangle. Получилось.
А нельзя ли картинку разместить прямо в TRectangle, ведь у него тоже есть канва?
0
Вложения
Тип файла: zip timage.zip (66.5 Кб, 1 просмотров)
krapotkin
3259 / 2899 / 790
Регистрация: 14.04.2014
Сообщений: 14,075
Записей в блоге: 13
11.12.2017, 19:18 #12
вы по ссылке-то не ходили чоль?
0
nikola129
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 33
12.12.2017, 17:42  [ТС] #13
Ходил, но увидев LoadFromFile закрыл, а сейчас решил проверить. Заработало. Спасибо.
Маленькая зогвоздка - фон остается серым. Что не так?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Var
  Rs: TResourceStream;
begin
  Rs := TResourceStream.Create(hInstance, 'ris', RT_RCDATA);
  Image1.Bitmap.LoadFromStream(Rs);
  Rectangle1.StrokeThickness := 3;
  with Rectangle2 do
  begin
    Fill.Kind := TBrushKind.bkBitmap;
    Fill.Color := TAlphaColorRec.White;
    Fill.Bitmap.WrapMode := TWrapMode.wmTileStretch;
    Fill.Bitmap.Bitmap.LoadFromStream(Rs);
    StrokeThickness := 3;
  end;
  Rs.Free;
end;
Если не грузить рисунок, то фон белый. Да, в FMX в отличие от VCL много чего.

Добавлено через 1 час 18 минут
И еще маленький вопрос Есть ли возможность установки промежутков в GridPanelLayout1?
0
krapotkin
3259 / 2899 / 790
Регистрация: 14.04.2014
Сообщений: 14,075
Записей в блоге: 13
12.12.2017, 21:37 #14
фон задан стилем того, на чем лежит rectangle
сам GPL может и не иметь фона, его тоже можно кинуть на Rectangle c цветным фоном и посмотреть, что будет

а промежутки надо делать не в GPL а просто устанавливать Margins у объектов внутри
посмотрите оф. доки по GPL, там прямо с картинками
0
nikola129
0 / 0 / 0
Регистрация: 04.08.2017
Сообщений: 33
13.12.2017, 17:19  [ТС] #15
Спасибо! И еще не совсем в эту тему. В этом пробном проекте выбор цвета через меню.
Два раза подряд один цвет прямоугольника не выбрать. Исправьте, пожалуйста, эту ситуацию.
Заранее благодарю.
0
Вложения
Тип файла: zip timage.zip (66.7 Кб, 0 просмотров)
13.12.2017, 17:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2017, 17:19
Привет! Вот еще темы с ответами:

Удаление динамического TImage - Delphi
Столкнулся с неведомое ерундой:wall:. В листбоксе есть записи, каждой из которых соответствует определенное кол-во картинок. При клике на...

Работа с картами в TImage - Delphi
Всем привет. У меня такой вопрос, у меня есть карта в формате Jpg мне нужно загрузить ее в TImage и увеличивать скоролом и ходить по карете...

Путь к картинке из TImage - Delphi
Наверное задам детский вопрос, но ответа не могу найти. Как из TImage получить путь к картинке которая загружена в него?

Прозрачное наложение на Timage - Delphi FireMonkey
Можно ли и как сделать прозрачное наложение на Timage нескольких небольших картинок?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru