Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden? (https://www.delphipraxis.net/187152-mobile-wie-koennen-dem-imageviewer1-verschiedene-jpgs-zugewiesen-werden.html)

Sel2012 1. Nov 2015 17:01

Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Ich möchte mit XE5 und FireMonkeyMobile in einem Rahmen (z.B. ImageViewer1) nacheinander verschiedene .jpgs anzeigen. Mit einem Bitmap, erstellt im Objektinspektor/Bitmap-Editor, ist das für 1 jpg kein Problem.
Der Bitmap-Editor scheint das jpg-Format zu wandeln, denn von Hand eingegeben, führt "imageViewer1.Bitmap:=('Biene.jpg');" zum Kommentar "[DCC Fehler] Unit1.pas(81): E2010 Inkompatible Typen: 'TBitmap' und 'string' ".
Ich kenne leider keine Methode, das Bitmap per Text auszutauschen. (Ich glaube, sehr intensiv gesucht zu haben).

zeras 1. Nov 2015 17:05

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Dein Compiler sagt dir schon das richtige. Du kannst einer Bitmap nur eine Bitmap zuweisen und keinen Dateinamen.
Entweder es gibt eine Funktion .loadfromfile oder du musst anderweitig die Bitmap schon im Speicher haben.

Sel2012 1. Nov 2015 18:14

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Zitat:

Zitat von zeras (Beitrag 1320299)
Dein Compiler sagt dir schon das richtige. Du kannst einer Bitmap nur eine Bitmap zuweisen und keinen Dateinamen.
Entweder es gibt eine Funktion .loadfromfile oder du musst anderweitig die Bitmap schon im Speicher haben.

".loadfromfile" funktioniert im Delphi-Beispiel nur in Kombination mit "OpenDialog": Image1.Bitmap.LoadFromFile(OpenDialog1.FileName);
"OpenDialog" scheint aber nur mit FireMonkey (ohne Mobile) zu funktionieren.
Wie kann ich die Bitmap denn separat (ohne image) speichern? Sie taucht nirgends getrennt auf. Ich möchte die "Bilder" am gleichen Ort anzeigen, also in demselben imageViewer. Das geht in VCL problemlos.
Wer mag mir ein funktionierendes Miniprogramm schicken? Gut gemeinte Fragmente scheinen mir nicht zu helfen.:-D zeras, bitte nicht böse sein.


Vielen Dank im voraus.

zeras 1. Nov 2015 18:23

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Ich habe mein Logo direkt mit ins Projekt eingebunden und dann lade ich das wie folgt:

Delphi-Quellcode:
var
  InStream: TResourceStream;

begin

InStream := TResourceStream.Create(HInstance, 'Logo', RT_RCDATA);
  try
    ImLogo.Bitmap.LoadFromStream(InStream);
  finally
    InStream.Free;
  end;

....

Sir Rufo 1. Nov 2015 19:09

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Zitat:

Zitat von Sel2012 (Beitrag 1320300)
".loadfromfile" funktioniert im Delphi-Beispiel nur in Kombination mit "OpenDialog": Image1.Bitmap.LoadFromFile(OpenDialog1.FileName);

Und warum wohl? Hast du dir im Debugger schon einmal angeschaut, was der OpenDialog als Dateinamen zurückliefert?

Kleiner Wink mit dem Zaunpfahl:

Wenn ich dir sage: "Hol mir mal das Auto!" was wäre deine spontane Reaktion darauf (abgesehen von "Hols dir doch selber!")?

Etwa: "Welches Auto und wo steht das Auto denn?"

Genau diese Problem hat
Delphi-Quellcode:
TBitmap.LoadFromFile
auch, wenn du dem einfach nur
Delphi-Quellcode:
'Biene.jpg'
gibst. ;)

Sel2012 1. Nov 2015 20:01

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
[QUOTE=zeras;1320301]Ich habe mein Logo direkt mit ins Projekt eingebunden und dann lade ich das wie folgt:

Hallo zeras, vielen Dank für die Mühe. Mit TResourceStream begebe ich mich auf unbekanntes Terrain. Mein Compiler meckert aber nicht.
Nur mit "Logo" kann er naturgemäß nix anfangen. Ich aber leider auch nicht:|:|. Wie wird denn aus aus der jpg-Datei eine entsprechende
Resource? (Dann könnte ich wenigstens an Hand eines Kochrezeptes versuchen den Rest zu verstehen).

Einen schönen Abend wünscht
Udo

Sel2012 1. Nov 2015 20:08

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1320302)
Zitat:

Zitat von Sel2012 (Beitrag 1320300)
".loadfromfile" funktioniert im Delphi-Beispiel nur in Kombination mit "OpenDialog": Image1.Bitmap.LoadFromFile(OpenDialog1.FileName);

Und warum wohl? Hast du dir im Debugger schon einmal angeschaut, was der OpenDialog als Dateinamen zurückliefert?

Kleiner Wink mit dem Zaunpfahl:

Wenn ich dir sage: "Hol mir mal das Auto!" was wäre deine spontane Reaktion darauf (abgesehen von "Hols dir doch selber!")?

Etwa: "Welches Auto und wo steht das Auto denn?"

Genau diese Problem hat
Delphi-Quellcode:
TBitmap.LoadFromFile
auch, wenn du dem einfach nur
Delphi-Quellcode:
'Biene.jpg'
gibst. ;)

Danke für die Antwort. Die Biene liegt im Hauptverzeichnis, also im selben Ordner. Im Mobile kann ich ein OpenDialog gar nicht
in der Form anlegen, jedenfalls optisch nicht erkennbar; ganz anders im FireMonkey :-D

Sir Rufo 1. Nov 2015 21:43

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Delphi-Quellcode:
ImageViewer1.Bitmap.LoadFromFile( 
  TPath.Combine( 
    TPath.GetHomePath, // oder welcher Pfad auch immer
    'Biene.jpg' ) );
Ja, wenn man nur irgendwie so eine Form anlegen könnte mit so einen OpenDialog drauf, dann könnte man ja sehen, was da so im Prinzip herauskommt (eine komplette Pfadangabe) ... aber das muss wohl erst noch erfunden werden

hoika 2. Nov 2015 04:06

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Hallo,
steht doch alles im Netz.
http://stackoverflow.com/questions/1...nd-to-use-them

Heiko

Sel2012 2. Nov 2015 07:28

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Zitat:

Zitat von hoika (Beitrag 1320307)
Hallo,
steht doch alles im Netz.
http://stackoverflow.com/questions/1...nd-to-use-them

Heiko

Hallo Heiko,
und wie bekomme ich "TJpegImage" so in meine procedure "eingebaut", dass es vom Compiler akzeptiert wird?
"Picture" gilt auch nicht für FireMonkeyMobile, oder?
Es wäre hilfreich, wenn abgeschriebene Programmteile auch auf Realisierungsmöglichkeiten geprüft würden. Natürlich halte ich die Tipps erst einmal für lauffähig und suche verzweifelt die Fehler bei mir. Vieles, was mir unter VCL leicht von der Hand ging, führt leider (für mich) bei FireMonkeyMobile zu reichlich Frust. Selbst mit den Beispielen aus dem Netz klappt nix mit FireMonkeyMobile.
Oder sollte dein Vorschlag wirklich lauffähig sein?

Gruß
Udo

Sel2012 2. Nov 2015 08:11

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
[QUOTE=Sir Rufo;1320306]
Delphi-Quellcode:
ImageViewer1.Bitmap.LoadFromFile( 
  TPath.Combine( 
    TPath.GetHomePath, // oder welcher Pfad auch immer
    'Biene.jpg' ) );
Hallo Sir Rufo,
danke für die nette Idee. Mein PC/Compiler akzeptiert nur folgende Zeile:
Delphi-Quellcode:
ImageViewer1.Bitmap.LoadFromFile(System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetHomePath,'boule.jpg' ) );

Wobei ich hoffte, den gewünschten Bildwechsel zu sehen. Ich hatte die jpgs auch in die Bereitstellung geladen.
Aber: Pustekuchen. Es bleibt bei der Anzeige des im Objektinspektor / Bitmap-Editor erzeugten "Bildes".
Irgendwie erscheint es mir auch logisch. In VCL wurden die jpgs im "Klartext" mit der exe übertragen. Das Prinzip gilt für die Apps nicht, sondern jedes Image bekommt individuell "sein" jpg über den Bitmap-Editor eingebaut. Dahinter scheint ein Umwandlungsprogramm zu stecken. Deshalb kann LoadFromFile kein jpg zum ImageViewer laden. An das neue Bitmap komme ich aber auch nicht isoliert heran, sodass ich auch keine austauschen kann.
Bleibt mein Problem, wie ich aus jpg ein Bitmap mache (unter FireMonkeyMobile).

mm1256 2. Nov 2015 13:18

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Zitat:

Zitat von Sel2012 (Beitrag 1320314)
Bleibt mein Problem, wie ich aus jpg ein Bitmap mache (unter FireMonkeyMobile).

Und was findet Tante Google dazu: "delphi jpg in bitmap"

borstenei 2. Nov 2015 13:39

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Ich verstehe nicht das Problem,
in meiner AndroidApp lade ich zum Start alle meine Bildernamen aus dem FotoOrdner in eine ListBox und beim Klick in die ListBox
lasse ich mir das Bild in einem anderen Tab als Vorschau anzeigen.Dazu reichen 2 Zeilen.

Delphi-Quellcode:
  Image1.Bitmap.LoadFromFile('/storage/emulated/0/DCIM/camera/' +  ListBox1.Selected.Text);
  TabControl1.TabIndex := 1;
...und meine KameraBilder sind Jpg's :-D

Sir Rufo 2. Nov 2015 13:42

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Zitat:

Zitat von borstenei (Beitrag 1320339)
Ich verstehe nicht das Problem,
in meiner AndroidApp lade ich zum Start alle meine Bildernamen aus dem FotoOrdner in eine ListBox und beim Klick in die ListBox
lasse ich mir das Bild in einem anderen Tab als Vorschau anzeigen.Dazu reichen 2 Zeilen.

Delphi-Quellcode:
  Image1.Bitmap.LoadFromFile('/storage/emulated/0/DCIM/camera/' +  ListBox1.Selected.Text);
  TabControl1.TabIndex := 1;
...und meine KameraBilder sind Jpg's :-D

Kinderspiel, du verwendest ja auch - korrekterweise - die konkrete/absolute Pfadangabe ;)

borstenei 2. Nov 2015 13:48

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Ich werwende auch eine ini in der ich die Einstellungen für die App speichere den Pfad hole ich mir zu laden so:
Delphi-Quellcode:
  IniFileName := System.IOUtils.TPath.GetDocumentsPath +System.SysUtils.PathDelim + 'dcim.ini';
  IniFile := TMemIniFile.Create(IniFileName);
und so könnte er auch den Pfad zu seinen Bildern ermitteln..

Sel2012 2. Nov 2015 13:59

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Zitat:

Zitat von mm1256 (Beitrag 1320336)
Zitat:

Zitat von Sel2012 (Beitrag 1320314)
Bleibt mein Problem, wie ich aus jpg ein Bitmap mache (unter FireMonkeyMobile).

Und was findet Tante Google dazu: "delphi jpg in bitmap"

Leider nichts - soweit meine sehr umfangreiche Recherche das beurteilen lässt. Delphi sagt nichts über die mögliche Anwendung in FMX aus. 'TJPEGImage' z.B. als Programmiertipp ist wohl untauglich.
Nicht hinter jeder Frage steht ein fauler und bequemer Anfänger, der sich mit fremden Federn schmücken will. Aber konkrete Tipps wären nett.

Olli73 2. Nov 2015 14:18

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Du kannst mit
Code:
Image1.Bitmap.LoadFromFile('MeineJpegDateiInklusiveVollständigemPfad.jpg');
die Datei laden. Und ja, Delphi erkennt, dass es eine JPEG-Datei ist und wandelt sie automatisch in die benötigte Bitmap um.

Du musst natürlich sicherstellen, dass "MeineJpegDateiInklusiveVollständigemPfad.jpg" auf dem Gerät vorhanden ist. Das kannst du mit
Code:
FileExists('MeineJpegDateiInklusiveVollständigemPfad.jpg') ;
vorher prüfen.

mm1256 2. Nov 2015 15:32

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Zitat:

Zitat von Sel2012 (Beitrag 1320343)
Zitat:

Zitat von mm1256 (Beitrag 1320336)
Zitat:

Zitat von Sel2012 (Beitrag 1320314)
Bleibt mein Problem, wie ich aus jpg ein Bitmap mache (unter FireMonkeyMobile).

Und was findet Tante Google dazu: "delphi jpg in bitmap"

Leider nichts - soweit meine sehr umfangreiche Recherche das beurteilen lässt. Delphi sagt nichts über die mögliche Anwendung in FMX aus. 'TJPEGImage' z.B. als Programmiertipp ist wohl untauglich.
Nicht hinter jeder Frage steht ein fauler und bequemer Anfänger, der sich mit fremden Federn schmücken will. Aber konkrete Tipps wären nett.

Deine Frage war..."wie ich aus jpg ein Bitmap mache..." und dazu liefert Google mit den von mir geschilderten Suchbegriffen zwei Beispiele die du 1:1 verwenden kannst. Also was willst du noch mehr? Anstatt "konkrete Tipps" anzumahnen, solltest du vielleicht erst mal...(nein, ich verbeiße mir jetzt diesen Kommentar) :cyclops:

Sel2012 2. Nov 2015 16:24

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
[QUOTE=mm1256;1320354][QUOTE=Sel2012;1320343][QUOTE=mm1256;1320336]
Zitat:

Zitat von Sel2012 (Beitrag 1320314)
Aber konkrete Tipps wären nett.

Ich habe keine konkrete Hilfe "angemahnt", sondern wollte deutlich machen, wo der Schuh drückt. Einen Experten mag ja mein Problemchen langweilen - ich schildere lediglich, wo es bei MIR klemmt. Niemand muss seine kostbare Zeit mit mir verschwenden. Wenn aber, dann lieber so, dass ich mit meinem Erfahrungsstand auch anknüpfen kann.
Ich hatte sehr wohl auf besagten Seiten gegoogelt. Für Delphi mögen die Lösungen ja funktionieren, aber z.B. TPicture" oder - wie schon erwähnt - "TJPEGImage" tauchen immer in den Artikeln auf und sind für mich nicht umzusetzen.
Wäre es denn so schlimm oder würde es meinen Ehrgeiz mindern müssen, wenn statt eines weitläufigen Tipps ein konkreter Link genannt würde?
Bei dere Fülle der Quellen kann man schon mal was übersehen :pale:. Aber trotzdem: danke.

Sel2012 2. Nov 2015 16:33

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Zitat:

Zitat von borstenei (Beitrag 1320339)
Ich verstehe nicht das Problem,
in meiner AndroidApp lade ich zum Start alle meine Bildernamen aus dem FotoOrdner in eine ListBox und beim Klick in die ListBox
lasse ich mir das Bild in einem anderen Tab als Vorschau anzeigen.Dazu reichen 2 Zeilen.

Delphi-Quellcode:
  Image1.Bitmap.LoadFromFile('/storage/emulated/0/DCIM/camera/' +  ListBox1.Selected.Text);
  TabControl1.TabIndex := 1;
...und meine KameraBilder sind Jpg's :-D

Und weil es jpgs sind, scheint es doch ein Problem zu sein - jedenfalls bei mir. Der aufmerksame Leser hat schon festgestellt, das Sir Rufos Vorschlag mit jpgs nicht klappte.
Auch Olli73 schlägt
Delphi-Quellcode:
Image1.Bitmap.LoadFromFile('MeineJpegDateiInklusiveVollständigemPfad.jpg');
vor.
Das gibt mir doch zu denken. Deshalb hier meine (nicht funktionierende) Version.
Delphi-Quellcode:
unit Unit3;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.ListBox,
  FMX.Layouts, FMX.StdCtrls, FMX.Objects, FMX.TabControl;

type
  TForm3 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    ListBox1: TListBox;
    ListBoxItem1: TListBoxItem;
    ListBoxItem2: TListBoxItem;
    ListBoxItem3: TListBoxItem;
    ListBoxItem4: TListBoxItem;
    TabControl1: TTabControl;
    procedure Button1Click(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation

{$R *.fmx}

procedure TForm3.Button1Click(Sender: TObject);
begin
    Image1.Bitmap:=TBitmap.create;
  Image1.Bitmap.LoadFromFile('C:\Users\u\Pictures\Goethe\' + ListBox1.Selected.Text);
  TabControl1.TabIndex := 1;
end;

end.
Findet jemand den Fehler?

mensch72 2. Nov 2015 16:50

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
google: "fmx load jpg"

-> http://stackoverflow.com/questions/2...ling-in-delphi
In FireMonkey, graphics are handled using specialized classes derived from FMX.Graphics.TCustomBitmapCodec that are registered with the FMX.Graphics.TBitmapCodecManager class. You use the general-purpose FMX.Graphics.TBitmap class for handling all graphics. When loading a graphic, it uses the appropriate registered codec (if it can find one), but when saving you have to specify the codec you want to use.

FireMonkey uses different codec implementations for each platform, thus there is no single class that you can subclass, like there is in VCL. So, in order to customize JPEG handling in FireMonkey, you will have to create your own TCustomBitmapCodec-derived codec and register it with TBitmapCodecManager (unregistering the existing classes for the .jpg and .jpeg file extensions). Here are the codec classes that FireMonkey currently implements:

Windows: TBitmapCodecWIC in FMX.Canvas.D2D.pas
OSX: TBitmapCodecQuartz in FMX.Canvas.Mac.pas
iOS: TBitmapCodecQuartz in FMX.Canvas.iOS.pas
Android: TBitmapCodecAndroid in FMX.Canvas.Android.pas
Using {$IFDEF} statements, you might be able to utilize those existing classes inside of your custom codec as needed.

-> http://codeverge.com/embarcadero.del...a-jpeg/1085948
But I looked into some FMX sources and searched for "JPEG" and found a code snippet that works. Here it is:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Filter: TBitmapCodec;
  TempBitmap: TBitmap;
begin
  if OpenDialog1.Execute then begin
    TempBitmap := TBitmap.Create(0, 0);
    Filter := DefaultBitmapCodecClass.Create;
    Filter.LoadFromFile(OpenDialog1.FileName, 0, TempBitmap);
    ImageControl1.Bitmap.Assign(TempBitmap);
    Filter.Free;
    TempBitmap.Free;
  end;
end;
And the JPEG appears! - See more at: http://codeverge.com/embarcadero.del....3YuJ46k0.dpuf

borstenei 2. Nov 2015 16:52

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Ich habe das mal eben bei mir nachgestellt:
Delphi-Quellcode:
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Objects,
  FMX.Controls.Presentation, FMX.StdCtrls, FMX.ListBox, FMX.Layouts,
  FMX.TabControl;

type
  TForm1 = class(TForm)
    TabControl1: TTabControl;
    TabItem1: TTabItem;
    TabItem2: TTabItem;
    ListBox1: TListBox;
    ListBoxItem1: TListBoxItem;
    ListBoxItem2: TListBoxItem;
    Button1: TButton;
    Image1: TImage;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
begin
   Image1.Bitmap.LoadFromFile('C:\Users\Frank\test\' + ListBox1.Selected.Text);
   TabControl1.TabIndex := 1;
end;

end.

das funzt bei mir auf Anhieb...warum auch nicht?!

hoika 2. Nov 2015 17:00

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Hallo,


Delphi-Quellcode:
// Wozu ist das denn da ?
Image1.Bitmap:=TBitmap.create;
// Was steht in ListBox1.Selected.Text ?
Image1.Bitmap.LoadFromFile('C:\Users\u\Pictures\Goethe\' + ListBox1.Selected.Text);
TabControl1.TabIndex := 1;

Heiko

borstenei 2. Nov 2015 17:05

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi Sel2012,
so sollte bei Dir der Testaufbau aussehen..
setzt natürlich voraus das Bild1 und Bild2 tatsächlich in dem Ordner befinden...:-D

Harry Stahl 2. Nov 2015 21:08

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Liste der Anhänge anzeigen (Anzahl: 3)
Wenn die Grafiken nicht allzu groß sind, kann man die auch in eine TImage-Komponente laden und die einzelnen Bilder dort aus dem MultiResBitmap dann dem Viewer einfach zur Laufzeit zuweisen (ab Delphi XE8 könnte man das auch einfacher mit einer TImagelist machen).

Man muss aber darauf achten, dass man im MultiResBitmap-Dialog die Option ("Größe nach Bild") wählt, bevor man die einzelnen Bilder hinzufügt (z.B. per Drag&Drop auf neu hinzugefügte Images vom Explorer aus) sonst werden die Grafiken auf die tatsächliche Skalierungsgröße vergrößert und mit entsprechendem Volumen in der Komponente abgelegt (siehe anliegenden Screenshot). Der in der MultiResBitmap eingestellte Skalierungsfaktor hat dann keine Auswirkung auf das Assignment, es werden also die originalen Ausmaße der Bilder verwendet.

Die Variante hat den Vorteil, dass man sich nicht mit den einzelnen Images rumschlagen und sich nicht überlegen muss, wie und wohin die auf dem mobilen Gerät müssen und wie man die dann wieder von dort zur Laufzeit laden kann. Und außerdem geht es deutlich schneller, als wenn man zur Laufzeit die Bilder erst noch laden muss.

Anliegend ein XE5-Projekt, welches das mal auf ganz einfache Weise demonstriert (ImageViewer, in dem man durch Betätigen des Vor oder Zurück-Schalters ein anderes Bild laden kann (insgesamt 7).

Wie gesagt, das macht nur Sinn, wenn die Bilder nicht allzu groß sind (sonst unverhältnismäßiger Speicherverbrauch). Im Demo sind es 7 mal 30 kB JPegs, die machen die Projekt.exe um ca. 400 kb größer.

Hier der Source des Programms:

Delphi-Quellcode:
procedure TForm2.bnNextClick(Sender: TObject);
begin
  if iv.Tag< Image1.MultiResBitmap.Count-1 then begin
    iv.Tag := iv.Tag+1;
    iv.Bitmap.Assign(Image1.MultiResBitmap.items[iv.tag].bitmap);
    iv.RealignContent;
  end;
end;

procedure TForm2.bnPrevClick(Sender: TObject);
begin
   if iv.Tag > 0 then begin
    iv.Tag := iv.Tag-1;
    iv.Bitmap.Assign(Image1.MultiResBitmap.items[iv.tag].bitmap);
    iv.RealignContent;
  end;
end;

procedure TForm2.FormShow(Sender: TObject);
begin
  iv.Bitmap.Assign(Image1.MultiResBitmap.items[0].bitmap);
  iv.RealignContent;
end;
Wenn die Bilder größer sind als die Abmaße des ImageViewers kann man die Bilder bei Bedarf mit einem
Delphi-Quellcode:
iv.bestfit;
in die Anzeigegröße einpassen.

r.koch 2. Nov 2015 22:22

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
Ganz kleinlaut, evetuell viel zu alt, überholt und OT:

Uses JPEG;

:oops::oops::oops:

Sel2012 3. Nov 2015 08:09

AW: Mobile: Wie können dem ImageViewer1 verschiedene .jpgs zugewiesen werden?
 
An alle, die so nett geholfen haben: Ich habe viel gelernt.
DANKE !!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz