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

Отрисовка рамки вокруг картинки.


Vizit0r

Вопрос

Delphi Seattle, Android 5.0.1

Формирую картинку через ScanLine. На выходе полученный битмап рисуется на полотне TImage, на котором перед этим был нарисован Rect.

GlobalBitmap - формированный tbitmap.

           with ObjectPreviewImage.Bitmap.Canvas do
            begin
              BeginScene;
              Clear(TAlphaColorRec.White);
              DRect := TRectF.Create(0, 0, GlobalBitmap.Width + 8, GlobalBitmap.Height + 8);
              DrawRect(DRect, 0, 0, AllCorners,
                       StealthForm.ObjectPreviewImage.AbsoluteOpacity);

              DRect := TRectF.Create(0, 0, GlobalBitmap.Width, GlobalBitmap.Height);
              DrawBitmap(GlobalBitmap,DRect,
                 TRectF.Create(2, 2, GlobalBitmap.Width + 2, GlobalBitmap.Height + 2), 1);
              EndScene;
            end;

 

Проблема собственно в чем - в андроидной версии слева и внизу рамка "съедается". В Win32 версии все отлично. На прилагаемых скриншотах это четко видно.

Документацию читал, гугл гуглил.

 

Что я делаю не так? Или это неизвестные подводные камни андроидного рисования на полотне?

 

P.S. Картинка одинаковая, цвет к определенной области применяется не верно. Походу тоже андроидные приколы. Но с этим я уже разберусь.

P.P.S. Уже разобрался с цветом - под андроидом Blue и Red в пикселе надо поменять местами. А насчет канвы - не получается никак.

Pandr1.jpg

win1.jpg

Изменено пользователем Vizit0r
Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Модераторы

можно демо проект? так сможем помочь быстрей

и для чего использовать ScanLine? и где вы его вообще взяли?) он в VCL версии был

а вообще попробуйте вместо 2 - использовать Scale девайса

DrawBitmap(GlobalBitmap,DRect, TRectF.Create(<scale>, <scale>, GlobalBitmap.Width + <scale>, GlobalBitmap.Height + <scale>), 1);

 

Ссылка на комментарий
  • 0

да легко

комментарии и мысли по теме - внутри исходника.

Цитата

и для чего использовать ScanLine? и где вы его вообще взяли?) он в VCL версии был

P := BitmapData.GetScanline(Y); - это VCL? 

Битмап вычитывается из файла, попутно преобразовывается из 15б формата в 32, но это отношения к теме не имеет.

Project2.rar

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...