Форум: "Начинающим";
Текущий архив: 2018.07.22;
Скачать: [xml.tar.bz2];
ВнизКак вывести фото на Image? (Delphi XE, Android) Найти похожие ветки
← →
Антонов Саша (2016-07-14 09:47) [0]Здравствуйте! Хочу научиться вывести фото на компонент Image. Нашел пример на сайте Эмбаркадеро http://docwiki.embarcadero.com/CodeExamples/Berlin/en/FMXTCanvasDrawFunctions_(Delphi), немножко переделал для себя:
var
MyBitmap: TBitmap;
MyRect: TRectF;
begin
MyBitmap := TBitmap.CreateFromFile("c:\myphoto.jpg");
MyRect := TRectF.Create(50, 30, 150, 200);
Image1.Bitmap.Canvas.BeginScene;
Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect, 20);
Image1.Bitmap.Canvas.EndScene;
end;
Поставил на событие OnShow формы(чтобы загружалоcь cразу при запуске), но получаю в итоге лишь белый экран телефона. Что делаю не так?
← →
Антонов Саша (2016-07-14 09:53) [1]еще добавил такие строки:
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Bitmap.SetSize(Round(Image1.Width), Round(Image1.Height));
Image1.Bitmap.Clear(TAlphaColors.White);
end;
результат тот же.. (((
← →
Игорь Шевченко © (2016-07-14 10:18) [2]
> но получаю в итоге лишь белый экран телефона
А в андроиде на телефоне точно есть
> "c:\myphoto.jpg"
?
← →
yui (2016-07-14 10:38) [3]все давно знают, что в ведроиде нету диска "це"
есть только диск "ф" (флешка)
и иногда диск "ы" (ыкстернал флешка)
← →
Антонов Саша (2016-07-14 10:52) [4]Переделал, теперь беру фото из потока, предварительно загрузив его в ресурсы, но результат тот же.. ((
var
ABitmap:TBitmap;
aWidth,aHeight:integer;
SrcRect, DstRect: TRectF;
rs_img: TResourceStream;
Image : TImage;
begin
with Form1.Image1.Bitmap.Canvas do
begin
if FindResource(0, "MyPhoto", PChar(RT_RCDATA)) <> 0 then rs_img:=TResourceStream.Create(0,"MyPhoto",PChar(RT_RCDATA));
Image := TImage.Create(nil);
Image.BitMap := TBitMap.Create(0, 0);
Image.BitMap.LoadFromStream(rs_img);
ABitmap:=Image.BitMap;
aWidth:=ABitmap.Width;
aHeight:=ABitmap.Height;
SrcRect:=RectF(0,0,aWidth,aHeight);
DstRect:=RectF(x,y,aWidth+x,aHeight+y);
if BeginScene then
begin
DrawBitmap(ABitmap,SrcRect,DstRect, 1, True);
EndScene;
Image.Free;
rs_img.Free;
end;
end;
end;
← →
yui (2016-07-14 11:00) [5]имадж битмап хочет битмап (бмп)
а ты ему суешь левый жпег
это не будет работать не только лишь в андроиде. мало где это будет работать
← →
Антонов Саша (2016-07-14 11:01) [6]Вычитал в интернете что народ напрямую пишет в Image: Image1.Bitmap.LoadFromStream(risunok);
но этот вариант не подходит так-как нужно пару фоток прочитать из ресурсов
и разместить в разных местах одного Image, типа галерею фото сделать.. ))
← →
yui (2016-07-14 11:05) [7]если народ пишет, то почему бы не попробовать имадж битмап загрузить из mp4 с финальным матчем евро-2016?
по идее имадж должен и видос показать.
лоад же фром стрим, все дела, народ пишет....
← →
Антонов Саша (2016-07-14 11:11) [8]Заменил фото на bmp-формат, в результате приложение закрывается сразу
после запуска на телефоне. Попробовал рисовать на канве формы, при событии OnPaint, все работает независимо от формата, даже png фото читает. А вот с отрисовкой на канве Image непонятка... ((
← →
Антонов Саша (2016-07-14 11:19) [9]Но с формой неудобно работать в каждом OnPaint прийдется все заново рисовать. Нужен компонент в котором нарисовал и забыл, потом еще дорисовал если надо. Наверно Image больше подойдет для этого или PaintBox?
← →
Kilkennycat © (2016-07-14 14:46) [10]
> PaintBox
← →
Антонов Саша (2016-07-14 15:09) [11]Можно пример работы с PaintBox и битмап? Особо интересует при каких событиях, что нужно делать(отрисовка, обновление)? Какие форматы можно отрисовывать? Как вывести png-формат с прозрачностью? Скачал книгу Осипова о программировании для Андроида, но там все оч.коротко и примеров мало.. ((
← →
Kilkennycat © (2016-07-14 15:28) [12]
> Можно пример работы с PaintBox и битмап? Особо интересует
> при каких событиях, что нужно делать(отрисовка, обновление)?
> Какие форматы можно отрисовывать?
то есть напечатать здесь справку из Делфи?
← →
Антонов Саша (2016-07-14 15:52) [13])) ясно, буду дальше гуглить... Может найду раб.пример...
← →
Антонов Саша (2016-07-14 16:40) [14]Как ни парадоксально, но справка иногда бесполезная вещь. Я вот вроде как рабочий там взял пример с битмепом, но всеравно не пашет.. ((
← →
sniknik © (2016-07-14 16:58) [15]а в Delphi XE есть модуль Jpeg? как в D7:
uses
Jpeg;
Image1.Picture.LoadFromFile("c:\myphoto.jpg");
ну, или что там вместо "c:"
не работает?
← →
Антонов Саша (2016-07-14 17:08) [16]>sniknik Про модуль Jpeg незнаю, беру фото из ресурсов через поток.
На канве формы рисует, а на Image/Paintbox нивкакую... ((
(Но работать с формой неудобно, постоянно приходится перерисовывать)
← →
Kilkennycat © (2016-07-14 17:15) [17]
> (Но работать с формой неудобно, постоянно приходится перерисовывать)
а что, у формы нет события onPaint?
← →
Антонов Саша (2016-07-14 17:26) [18]на OnPaint формы и перерисовывал все, добавишь еще что-то, старое изображение исчезнет, чтобы этого не случилось рисовал повторно старое и рядом новое,оч.неудобно.. В Image/PaintBox вроде должно запоминать старое без повторной отрисовки, но пока не получается ничего в них вывести... ((
Еще блин эти ограничения с форматами.. На канве формы из ресурсов(потока) рисует jpg,bmp,png без проблем...
← →
Антонов Саша (2016-07-14 17:26) [19]на OnPaint формы и перерисовывал все, добавишь еще что-то, старое изображение исчезнет, чтобы этого не случилось рисовал повторно старое и рядом новое,оч.неудобно.. В Image/PaintBox вроде должно запоминать старое без повторной отрисовки, но пока не получается ничего в них вывести... ((
Еще блин эти ограничения с форматами.. На канве формы из ресурсов(потока) рисует jpg,bmp,png без проблем...
← →
Антонов Саша (2016-07-14 22:32) [20]Решил задачку по своему, рисую на Bitmap, потом присваиваю его Image.. ))
оч.быстро работает! если бы рисовал на Image, наверное было бы медленее...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2018.07.22;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.001 c