Autor Beitrag
Saarpoint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: Mi 03.05.06 19:31 
Hallo!

Ich hab folgendes Problem: Ich bearbeite mein Projekt auf 2 XP-Systemen.
Ich lasse in einem TImage verschiedene Icons anzeigen, die aus einer Imagelist
bezogen werden.

Es wird ein Smiley angezeigt dessen Hintergrund transparent ist, was auch auf dem
PC im Büro prima klappt. Kopiere ich jetzt den Source auf's Läppi um unterwegs daran
zu basteln, erscheint ohne den Source oder irgendwelche Eigenschaften zu ändern, der
Smiley ohne transparenten Hintergrund. Es erscheint der runde Smiley und die vier Ecken
des 32x32 Pixel großen Icons, sind in weißer Farbe.

Zurück auf den Büro-PC kopiert, sind die weißen Ecken verschwunden und wieder,
so wie es sein soll, transparent.

Fehlt dem XP auf dem Läppi was?

Gruß, Andy

_________________
Standart := false; Standard := true;
DelphiAnfänger
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 112

Win XP, Firefox 2.0, IE6
Delphi 5 Prof., Delphi 2005 PE
BeitragVerfasst: Mi 03.05.06 22:51 
hier (weiter unten) hatte auch jemand ein ähnliches problem:
user profile iconHorschdware hat folgendes geschrieben:
Mal ne Frage: Ich lasse das ganze gerade auf einem WinXP Rechner laufen und habe beim Würfelbecher nen Transparenzfehler. Hast du den auch (d.h. Programm schaut nicht wie auf dem Screenshot aus, sondern hat nen weissen Rand um den Becher)?

user profile iconHorschdware hat folgendes geschrieben:
Scheint wohl wieder so ein toller Spezial-Einzelfall zu sein.
Ich schreibe vllt wenn ich wieder zu Hause bin eine Funktion dazu die das prüfen soll.
Scheint irgendein Zeichenfehler zu sein: Die Bechergrafik hat clLime als Transparenzfarbe. Auf meinem System hier wird die allerdings nicht als Transparent, sondern als weiss dargestellt. Sehr merkwürdig...

edit: AHA! Habs rausgefunden: Der Fehler tritt nur bei 32bit Farbtiefe auf. Jetzt brauchts nur noch ne Idee um das zu beheben ^^
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Mi 03.05.06 23:07 
Moin!

Das hat AFAIK was damit zu tun, dass die IDE Bitmaps im geräteabhängigen Format vorhält und erst beim Kompilieren daraus geräteunabhängige macht (oder so ähnlich... ;)).

Füg die Bitmaps auf dem anderen System nochmal in das Projekt ein (einfach nochmal laden), dann ist der Spuk weg - natürlich nur solange, bis du das Projekt wieder auf den anderen Rechner kopierst... :|

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Do 04.05.06 00:50 
Ich klemm mich mal dahinter. Hab das Problem schliesslich auch.
Meine Vermutung:

Ein Bild in HighColor (24bit) setzt sich zusammen aus jeweils 1 Byte pro Farbe = 3 Byte
Ein 32bit TrueColor Bild bekommt zusätzlich noch einen 8bit Alphakanal.

Wenn nun im Programm die Transparenz gebastelt wird, dann wird eine Transparenzfarbe angegeben.
Der Objektinspektor zeigt uns da gleich wie die aktuelle Farbe heisst, z.b. $00B79F98.
auffällig sind dabei die ersten zwei nullen, das alphakanalbyte.

Was passiert nun, wenn unser Bild in 32bit irgendetwas im alphakanal stehen hat?
dann würde die farbe nicht mehr als transparenzfarbe gewertet werden.

ist bisher reine theorie das alles, aber vielleicht finde ich ja was raus...

_________________
Delphi: XE - OS: Windows 7 Professional x64
Saarpoint Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: Do 04.05.06 23:45 
Also ich hab mal auf'm PC nachgeschaut, bei dem es mit der Transparenz keine Probleme gibt.
Dieser ist allerdings auf 32bit eingestellt... :?
Läppi müsste ich mal nachschau'n, aber der liegt auf der Arbeit...

Irgendwie scheint es da allgemein ein Problem bei der Transparenz bei Delphi zu geben.
Bei einem anderen Projekt habe ich Gif's benutzt und musste mir, um diese zu nutzen, eine
extra Kompo installieren. Die hat aber irgendwie meine komplette IDE zerschossen, so dass
ich Delphi neu installieren musste...

Ich schau mal auf dem Läppi morgen nach. Hoffentlich bekommen wir es raus, da ich es veröffentlichen
will und es ja beim Nutzer nicht ebenfalls zu diesem Schönheitsfehler kommen soll.

Gruß, Andy

_________________
Standart := false; Standard := true;
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 04.05.06 23:50 
Moin!

user profile iconSaarpoint hat folgendes geschrieben:
da ich es veröffentlichen will und es ja beim Nutzer nicht ebenfalls zu diesem Schönheitsfehler kommen soll.

IMHO tritt das Problem nur dann auf, wenn du das Projekt auf dem anderen Rechner in der IDE öffnest und die Bilder nicht neu reinpackst. Im Compilat kommt es später nicht zu dem Problem, da die dort eingebundene Ressource geräteunabhängig ist.

Fazit: Vor dem finalen Erzeugen für´s Ausliefern nochmal die Bilder ins Projekt importieren, dann klappt´s (zumindest bei mir geht´s dann so). ;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Fr 05.05.06 01:08 
Problem tritt bei mir in der fertig compilierten exe auf - auch wenn in der ide alles ok war.
Scheint also an entwas anderem zu liegen.

_________________
Delphi: XE - OS: Windows 7 Professional x64
Saarpoint Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: Fr 05.05.06 13:50 
Also an der Bit-Tiefe kann's nicht liegen - der Schlepptop hat auch 32bit ...

@Narses:
Das hab ich noch gar nicht ausprobiert :oops:
Hab's immer nur mit IDE im Hintergrund getestet.

Andy

_________________
Standart := false; Standard := true;
Saarpoint Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: Fr 05.05.06 14:27 
So, da bin ich wieder.
Ich hab die EXE ohne Delphi gestartet - ohne Erfolg!
Ich hab die Imagelist gelöscht, alle Icons neu aufgenommen
und compiliert - ohne Erfolg!

Das Problem ist, dass der Hintergrund eine Grafik ist. Wäre es ein
einfarbiger Hintergrund, hätte ich die weißen Ecken dementsprechend gefärbt.

Hab jetzt noch eine Idee: Ich erstelle das Setup auf dem PC, wo es mit der Transparenz funzt.
Und installiere das Progi auf'm Läppi. Mal schau'n was dabei rauskommt...

Gruß, Andy

_________________
Standart := false; Standard := true;
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 05.05.06 15:11 
Moin!

Hmmm.... da war doch noch was, mt den maskierten Images aus der ImageList... :gruebel: <stöber, ahh, da ist es ja>

Also, die Images aus der Liste in ein Image auf der Form weise ich so zu:
ausblenden Delphi-Quelltext
1:
ImageList1.GetIcon(Index,Image1.Picture.Icon);					


Voraussetzung ist, dass die Images in der Liste mit korrekter Maske angelegt sind. :mahn: Das geht so:
- Die Bitmaps für die ImageList so aufbereiten, dass die transparente Farbe garantiert nur für die transparenten Bereiche eingesetzt wird (am besten alle Images in ein großes Bitmap packen und beim Laden in der IDE automatisch splitten lassen)
- direkt nach dem Laden/Splitten der Bilder alle Images auswählen (Strg+A) und die transparente Farbe einstellen, bestätigen (Return)
- jetzt sollten die Images mit korrekter Transparenz in der Liste sein und der Trick über die Icon-Zuweisung sollte die Transparenz erhalten.

;)

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
Saarpoint Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: So 21.05.06 10:23 
Hallo!

Ich denke, es liegt an den XP-Installationen...
Ich hab jetzt mal das Setup erstellt und jeweils auf den Rechnern installiert. Auf dem einen ist das Icon transparent, auf dem andern nicht. Genau wie bei der Entwicklung.

Wie läd man den Bilder gesplittet in die IDE? Ich habe alle einzeln (4 Stk.) hinzugefügt, aber die ComboBoxen zum einstellen der Transparenz, waren im ImageList-Editor bei jedem Icon in Geisterschrift.

Gruß, Andy

_________________
Standart := false; Standard := true;
Saarpoint Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 199

Win XP Home, Vista Home Premium
D5 Std, D7 pers., D2005 Pro. SP3, TurboDelphi
BeitragVerfasst: So 21.05.06 22:22 
Hat sich erledigt! :D

Ich hab die transparenten Bereiche der Icons in einer
der Farben des Hintergrundes umgefärbt und nochmals die
Tranzparenz der ImageList auf Enabled gestellt.

Andy

_________________
Standart := false; Standard := true;