Поиск сообщества

Показаны результаты для тегов 'TBitmap'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Общие вопросы
    • Анимация
    • Графика
    • Стили
    • Базы данных и REST
    • Компоненты
    • Положение, размеры, выравнивание
    • Работа с текстом
    • Приложение и формы
    • Отладка
    • Развертывание приложений
    • Вопросы по языку Object Pascal и RTL
    • Общая информация о TControl
    • События
    • Прочие вопросы
  • Вопросы по платформам
    • Android
    • iOS
    • OSX
    • Windows
    • Windows Phone
    • Linux
  • Вопросы по использованию RAD Studio
    • Лицензирование
    • Сборка проектов
    • Multi-Device Designer
    • Редактор кода
    • Вопросы
  • Обучение
    • Основная информация
    • Вопросы
    • Отзывы
  • Поиск специалистов по FireMonkey
    • Консультации
    • Ищу подрядчика
  • API интернет сервисов
    • ВКонтакте API
    • Google Maps API
    • Yandex деньги
  • Дополнительные ресурсы по FireMonkey
    • Сторонние компоненты
    • Приложения, написанные с использованием FireMonkey
    • Примеры
    • Руководства
    • Шаблоны
    • Статьи и заметки
    • Информация о версиях RAD Studio
    • Новости
  • Организация работы данного форума
    • Правила форума
    • Нарушения правил форума
    • Предложения об организации форума
    • Проблемы
    • Функции форума
  • Видеокурсы
    • Основная информация
    • Курсы
    • Предложения и голосования за новые курсы
    • Вопросы

Категории

  • Курсы

Найдено: 24 результата

  1. TBitmapImage -> TBitmap

    Можно ли получить TBitmap из TBitmapImage? Конвертировать.
  2. TGrid и картинка из TBlobField на Android

    Пишу кроссплатформенное приложение. Результат поиска отображается в TGrid. Стал вопрос отображения картинки в одной из колонок. На Windows все ок, но на планшете происходят просто чудеса: при первом отображение все корректно, но если простоколить вверх-вниз как картинки одни перетираются другими, часть вообще отображается вверх ногами. Код для сохранение картинки(jpg) в базу: if Assigned(sm) then begin sm.Position := 0; //TBlobField(dmData.cdsPlayerData.FieldByName('Photo')).LoadFromStream(sm); vImage := TImage.Create(nil); try sm.Position := 0; vImage.Bitmap.LoadFromStream(sm); vKoef := vImage.Bitmap.Height / 64; vImage.Bitmap.Resize(Trunc(vImage.Bitmap.Width / vKoef), Trunc(vImage.Bitmap.Height / vKoef)); sm.Free; sm := TMemoryStream.Create(); try vImage.Bitmap.SaveToStream(sm); TBlobField(dmData.cdsPlayerData.FieldByName('SmallPhoto')).LoadFromStream(sm); finally sm.Free; end; finally vImage.Free; end; end{if}; До скрола: После скрола: Пробовал и LiveBinding, и ручную прорисовку - результат один и тот же. Есть идеи что не так? P.S. Знаю что нужно делать через TListView, но заказчик хочет «сеточку как в старой программе», так как на android будет работать только на планшетах – я согласился.
  3. Здравствуйте! Стоит задача загружать фотографии и отображать их в списке. Казалось бы, как два пальца, но... Код работал долгое время, все грузилось и отображалось. Спустя какое-то время, фото грузиться перестали. Дебаггинг выявил, замкнутый бесконечный цикл в этой процедуре: procedure TBitmap.AssignFromSurface(const Source: TBitmapSurface); var BitmapData: TBitmapData; MaxSize: Integer; ResampledSurface: TBitmapSurface; I: Integer; SourceRect: TRectF; begin MaxSize := CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize); <-- MaxSize = 0 if (Source.Width > MaxSize) or (Source.Height > MaxSize) then begin SourceRect := TRectF.Create(0, 0, Source.Width, Source.Height); SourceRect.Fit(TRectF.Create(0, 0, MaxSize, MaxSize)); ResampledSurface := TBitmapSurface.Create; try ResampledSurface.StretchFrom(Source, Trunc(SourceRect.Width), Trunc(SourceRect.Height), PixelFormat); AssignFromSurface(ResampledSurface); <-- infinity loop here finally ResampledSurface.Free; end; end else begin SetSize(Source.Width, Source.Height); if Map(TMapAccess.Write, BitmapData) then try for I := 0 to TBitmapSurface(Source).Height - 1 do Move(TBitmapSurface(Source).Scanline[I]^, BitmapData.GetScanline(I)^, BitmapData.BytesPerLine); finally Unmap(BitmapData); end; end; end; В самом начале процедуры MaxSize получает значение 0 (ноль!), размеры картинки больше нуля и процедура влетает в бесконечный цикл на строке AssignFromSurface(ResampledSurface); Кто-то сталкивался? Есть мысли как лечить? Всем спасибо!
  4. Добрый день. Существует одна проблема, с которой уже несколько недель не могу справиться. Есть старый код под WinAPI, его нужно переделать под Android через firemonkey. И главная проблема - есть код, который из собственного формата делает HBITMAP из WinAPI. Фактически это структура, где последнее поле - указатели на биты. Это переделать легко, создав собственную копию такой структуры. Но теперь мне нужно перевести ее в TBitmap, и я не очень понимаю как это сделать.
  5. Область, занимаемая TBitmap

    Часто при отрисовке битмапа на холсте используется метод DrawBitmap, где, в частности, в качестве аргумента необходимо указать прямоугольные области источника (SrcRect) и приемника (DestRect). Эти прямоугольники имеют формат записи (Left, Top, Right, Bottom). При указании в качестве SrcRect всего битмапа целиком как здесь на формуме так и в книге Осипова я встречал такую запись: RectF(0,0,ABitmap.Width,ABitmap.Height) Но моя логика подсказывает, что такой битмап должен иметь размеры на 1 пиксель по горизонтали и вертикали больше, чем на самом деле, ведь первый пиксель имеет координаты (0;0), а последний (ABitmap.Width,ABitmap.Height). Что, наверное, приводит к искажениям при отображении битмапа на холсте. Мне думается, что при рисовании целого битмапа следует писать так: RectF(0,0,ABitmap.Width-1,ABitmap.Height-1) Прав ли я или не прав? Если нет, то почему?
  6. Привет, друзья! Подскажите - как, с максимально возможной скоростью, определить отсутствие изображения как такового в TBitmap? Т.е. - есть TBitmap. Он либо заполнен изображением (картинка), либо он - абсолютно черный прямоугольник. Каким способом можно узнать - что в нем именно изображение? Т.е. - НЕ абсолютно черный прямоугольник... И определить это нужно "мгновенно" (условно выражаясь). Заранее всем благодарен за участие! P.S. Варианты типа того что ниже - не предлагать)) Хотелось бы что-то "побыстрее"! Еще раз спасибо! function IsBitmapEmpty(Bmp: TBitmap): Boolean; var X, Y : Integer; BmpData: TBitmapData; yAddr : Integer; AlphaCount : integer; begin Result := False; try AlphaCount := 0; Bmp.Map(TMapAccess.Read, BmpData); for Y := 0 to Bmp.Height div 2 do begin YAddr := Y * Bmp.Height; for X := 0 to Bmp.Width - 1 do if (PAlphaColorArray(BmpData.Data)^[YAddr + X] <> TAlphaColorRec.Null) and (PAlphaColorArray(BmpData.Data)^[YAddr + X] <> TAlphaColorRec.Black) then begin inc(AlphaCount); Break; end; if AlphaCount > 0 then Break; end; finally Bmp.Unmap(BmpData); Result := AlphaCount = 0; end; end;
  7. 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 в пикселе надо поменять местами. А насчет канвы - не получается никак. P
  8. Друзья, выручайте! Уже на сутки "завис"... Приложение под Android должно загружать картинки в TListViewItem (аватарки) с HTTP. Ресурс доступен. Картинки на нем тоже. Использую iDHTTP (iDHTTP тоже "кидал" на форму и создавал динамически - результат один) и TMemoryStream. Код ниже. Само приложение на устройстве выдает ошибку: Access violation at address 559E45CC accessing address 00000000 Отладчик выдает: class segmentation fault 11 Опытным путем установил, что ошибка, скорее всего, возникает при попытке заполнения TMemoryStream (пробовал TMemoryStream.LoadFromFile - то же самое, хотя приложением TListViewItem.BitMap.LoadFromFile с этим же файлом проходит на ура и все работает). Во всех случаях используются PNG-картинки небольшого размера и разрешения: 20-25 кБ. В коде адрес картинки указан тестовый осознанно (в приложение картинка по используемому адресу доступна). Часть кода: var item:TListViewItem; pic:TMemoryStream; idhttp1:tidhttp; ... idhttp1.Create(Application); pic:=TMemoryStream.Create; try IdHTTP.Get('http://site.ru/icons/icon.png, pic); try Item.Bitmap.LoadFromStream(pic); except end; finally pic.Free; IdHTTP1.Free; end; Вопроса 2: Что я делаю не так? Подскажите, пож-та, хороший пример для выполнения такой задачи (желательно с применением потоков - чтобы приложение не висло на период загрузки данных из HTTP). Спасибо большое!
  9. Загружаю картинку в TBitmap из TMemoryStream, но иногда в TBitmap копируется только часть картинки. Загружаю следующим кодом: var ResourceStream: TResourceStream; Bitmap: TBitmap; begin ResourceStream := TResourceStream.Create(hInstance, 'IMAGE_NAME', RT_RCDATA); ResourceStream.Position := 0; Bitmap.LoadFromStream(ResourceStream); ResourceStream.SaveToFile('img_res.png'); Bitmap.SaveToFile('img_bitmap.png'); FreeAndNil(ResourceStream); end; В итоге в img_res.png нормальное изображение, а в img_bitmap.png первые N байт оригинала, при одинаковом размере картинки N одинаковое. С TMemoryStream аналогично. Как исправить?
  10. [Windows] Как загрузить HICON в TBitmap?

    доброго времени суток подскажите метод как засунуть иконку в bitmap получаю иконку папки и ума не приложу как ее преобразовать var infoFile:SHFILEINFO; flag:Cardinal; begin try flag:=SHGFI_ICON; flag:=flag or SHGFI_SMALLICON; ZeroMemory(Addr(infoFile),SizeOf(infoFile)); SHGetFileInfo('C:\',0,infoFile,SizeOf(infoFile),flag); // infofile.hIcon (HICON) как присвоить его картинки Image1.Bitmap :=
  11. Как вывести текст на изображение так, чтобы его можно было сохранить в .jpg формате. P.S. Нет метода TextOut у Image.
  12. Я создаю TListViewItem и добавляю её в TListView, но как добавить картинку слева? Вот код создания ячейки: TListViewItem *Item = ListView1->Items->Add(); Item->Text = "123";
  13. Как рисовать картинки из Deployment

    Всем доброго времени суток! Через Deployment добавил все нужные картинки. В моем случае мои картинки изменяться никак не будут, и открываются только для чтения. Поэтому я не стал менять пути для них. В связи с этим столкнулся с проблемой - как же собственно получить доступ к ним? То есть мне нужно нарисовать одну из тех картинок. Я не знаю как правильно это делать. Я подключил вверху System.IOUtils, чтобы получить доступ к TPath. Пробовал разные варианты: просто рисовать картинку с этим именем: form1.Canvas.DrawBitmap(fon,RectF(0,0,320,240),RectF(30,30,320,240),1,true); пробовал указывать так еще: fon:=Tbitmap.CreateFromFile(TPath.Combine(TPath.GetDocumentsPath, 'fon.bmp')); а затем рисовал таким же способом: form1.Canvas.DrawBitmap(fon,RectF(0,0,320,240),RectF(30,30,320,240),1,true); Читал тему на вашем форуме с названием "Включение своих файлов в приложение", но это не помогло мне. Не знаю, может надо как ресурс еще их подключить? Хотя мне кажется я неправильно использую TPath. Заранее спасибо всем за помошь.
  14. Здравствуйте. Как изменить цвет отдельного пикселя, а точнее сделать его полностью прозрачным? Например в image загруженная картинка. И надо пиксель с координатами x75 и y50 сделать невидимым.
  15. Как узнать поддерживаемый максимально допустимы размер изображения в TBitmap? Поскольку не любое большое изображение можно загрузить в TBitmap.
  16. Здравствуйте. Хочу загнать карту в приложение. Т.е. сделать ПринтСрин нескольких участков, слить их в одно изображение в фотошопе, а потом иметь возможность просматривать на смартфоне под android. Что бы можно было пальцами приблизить, подвигать карту. Какой компонет посоветуете?
  17. Коллеги Есть проблема: Есть картинка созданная средствами сторонней dll, от нее у меня только HBITMAP Как мне ее перекинуть в TBitmap, и вывести ее например в контрол TImage?
  18. Стоит задача программно добавить изображение в MultiResBitmap. Как это можно сделать?
  19. Подскажите пожалуйста глупому человеку , как можно загрузив изображение: buf: TBitmap; buf.LoadFromFile('.bmp'); Определить цвет нужного мне пикселя (X,Y), и нарисовать хотя бы линию этого цвета на форме используя обычный: Canvas.DrawLine
  20. Прошу помощи,как вывести иконки в ListView которые хранятся в StyleBook ? у меня есть база,в ней хранятся ID иконок, которые нужно выводить,в StyleBook лежат иконки, может у кого есть подобный опыт?!
  21. Метод доступа к пикселям TBitmapData.GetScanline работает быстрее чем TBitmap.Map с последующим циклом? Можете привести пример работы с TBitmapData.GetScanline?
  22. Доброе время суток! При рисовании на канве, например TImage абсолютно отсутствует антиалайсинг. Даже TShape с закругленными углами в design-time отрисовывается красиво, а в run-time без всякого сглаживания. Никакой информации по этому поводу не нашел. Может кто подскажет, как рисовать с антиалайсингом? В DesignTime: В Runtime: Пишу для android на XE5.
  23. Здравствуйте. Решил не спамить в одну ветку, хоть и смежные, но все же разные вопросы. В своей компоненте хочу использовать Image. И что бы картинка у image менялась в зависимости от значения переменной. Вроде такого (vcl): if sType = 'sun' then image1.Picture.LoadFromFile('../sun.png'); if sType = 'moon' then image1.Picture.LoadFromFile('../moon.png'); Т.е. я так раньше делал. А как это сделать в своем компоненте, на FMX? Подскажите пожалуйста.
  24. Создаю в коде Timage и загружаю в него картинку var MyImage: Timage; begin .... MyImage:=TImage.Create(Self); .... MyImage.MultiResBitmap.Add.Bitmap.LoadFromFile('MyPic.png'); .... end; Как выставить прозрачный цвет default? пытаюсь выставить так : MyImage.MultiResBitmap.TransparentColor := Default; Но выдает ошибку [dcc32 Error] Unit1.pas(46): E2029 '(' expected but ';' found Как добиться того же результата что и при выборе параметра в ручную? Код проекта: TImage.zip