AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Firemonkey: Image, per code Bitmaps ins MultiResBitmap und neue Transparenzfarbe
Thema durchsuchen
Ansicht
Themen-Optionen

Firemonkey: Image, per code Bitmaps ins MultiResBitmap und neue Transparenzfarbe

Ein Thema von onepiecefreak2 · begonnen am 23. Aug 2014 · letzter Beitrag vom 12. Jun 2015
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#1

AW: Firemonkey: Image, per code Bitmaps ins MultiResBitmap und neue Transparenzfarbe

  Alt 23. Aug 2014, 17:56
Wie ebenfalls in der Hilfe nachzulesen ist, wird die TransparentColor von CreateBitmap ausgewertet.

(Code ungetestet!)

Delphi-Quellcode:
var
  bmp: TBitmap;
  mr: TFixedMultiResBitmap;
begin
  { lade Bitmap aus Datei Hurz.bmp in Items[0] der MultiResBitmap mit Berücksichtigung der TransparentColor }
  bmp := mr[0].CreateBitmap('Hurz.bmp');
  try
    mr[0].Bitmap.Assign(bmp);
  finally
    bmp.Free;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
onepiecefreak2

Registriert seit: 13. Jun 2014
50 Beiträge
 
#2

AW: Firemonkey: Image, per code Bitmaps ins MultiResBitmap und neue Transparenzfarbe

  Alt 23. Aug 2014, 23:48
Zu meinem Bedauern muss ich dir sagen, dass mr bei mir nicht auf TFixedMultiResBitmap gesetzt werden kann. Undeklarierter Bezeichner!

[2 Minuten später]: Es muss TImageMultiResBitmap sein.

Danke für die Hilfe.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#3

AW: Firemonkey: Image, per code Bitmaps ins MultiResBitmap und neue Transparenzfarbe

  Alt 24. Aug 2014, 10:41
Die Deklaration als TFixedMultiResBitmap steht eigentlich nur als Hinweis da. Natürlich sollst du für mr die bestehende Instanz deiner MultiResBitmap einsetzen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
onepiecefreak2

Registriert seit: 13. Jun 2014
50 Beiträge
 
#4

AW: Firemonkey: Image, per code Bitmaps ins MultiResBitmap und neue Transparenzfarbe

  Alt 24. Aug 2014, 14:05
Ich und meine Leitungssteherei ^^. Ja wie gesagt hat funktioniert. Allerdings findet er meine Bilddatei nicht. Wenn dieser Befehl:
bmp := mr[0].CreateBitmap('Test.bmp'); ausgeführt wird, gibt er mir eine Zugriffsverletzung aus. Entweder liegts an den Ordner-Rechten (teste ich sofort) oder es liegt daran wo die Datei liegt. Wenn ich die Datei Test.bmp laden will, wo muss sie liegen?

[2 Minuten später]: Also an den Orner-Rechten liegt es nicht!

P.S: Das ist die Fehlermeldung: "Zugrffsverletzung bei Adresse 8BFFFA0D. Lesen von Adresse 8BFFFA0D."

Geändert von onepiecefreak2 (24. Aug 2014 um 14:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#5

AW: Firemonkey: Image, per code Bitmaps ins MultiResBitmap und neue Transparenzfarbe

  Alt 24. Aug 2014, 16:29
Du solltest nicht mr verwenden - die Variable habe ich nur zur Veranschaulichung eingeführt. Da sie nicht initialisiert wird, führt der Zugriff auf mr[0] zu der Zugriffsverletzung.

Du solltest anstatt mr schon dein Image1.MultiResBitmap verwenden. Natürlich müssen die Bitmaps bereits existieren. Mit Image1.MultiResBitmap[0] sprichst du das erste, mit Image1.MultiResBitmap[1] das zweite an usw.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
onepiecefreak2

Registriert seit: 13. Jun 2014
50 Beiträge
 
#6

AW: Firemonkey: Image, per code Bitmaps ins MultiResBitmap und neue Transparenzfarbe

  Alt 24. Aug 2014, 16:40
Also muss es statt
bmp := mr[0].CreateBitmap('Test.bmp'); so heißen:
bmp := Image1.MultiResBitmap[0].CreateBitmap('Test.bmp'); ?

Wenn dem so ist (was ich nicht glaube, bei meiner gerade sehr dürftigen Aufnahmefähigkeit ), habe ich wieder eine Zugriffsverletzung. Diesmal bei Adresse 00000000. Ich glaube die Nullen sollen mich darauf hinweisen, dass das Bild fehlt? Das Bild ist in jedem einzelnen Ordner meines Projektes vertreten, um alle möglichen Pfade abzudecken. Wenn er das Bild also nicht findet... wo muss das Bild denn dann hin außer in den Projektordner?

Boah bin ich heute schwer von kp. Tut mir echt sry Uwe.

P.S: Nur nochmal zur Info. Die Bitmaps sollen aus einer Datei heraus in die MultiResBitmap geladen werden. Also nicht über den Editor hinzugefügt werden, sondern über den Code.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#7

AW: Firemonkey: Image, per code Bitmaps ins MultiResBitmap und neue Transparenzfarbe

  Alt 24. Aug 2014, 17:00
P.S: Nur nochmal zur Info. Die Bitmaps sollen aus einer Datei heraus in die MultiResBitmap geladen werden. Also nicht über den Editor hinzugefügt werden, sondern über den Code.
Dann ist die MultiResBitmap zu diesem Zeitpunkt noch leer? In dem Fall musst du erstmal die einzelnen Bitmaps erzeugen. Vielleicht helfen dir diese drei Methoden weiter:
Delphi-Quellcode:
procedure TForm27.AddBitmap(const AFileName: string; AScale: Single);
var
  itm: TFixedBitmapItem;
begin
  itm := Image1.MultiResBitmap.Add;
  itm.Scale := AScale;
  LoadBitmap(itm, AFileName);
end;

procedure TForm27.ChangeBitmap(AIndex: Integer; const AFileName: string);
begin
  LoadBitmap(Image1.MultiResBitmap[AIndex], AFileName);
end;

procedure TForm27.LoadBitmap(AItem: TFixedBitmapItem; const AFileName: string);
var
  bmp: TBitmap;
begin
  bmp := AItem.CreateBitmap(AFileName);
  try
    AItem.Bitmap.Assign(bmp);
  finally
    bmp.Free;
  end;
end;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 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 by Thomas Breitkreuz