Autor Beitrag
mick
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 159



BeitragVerfasst: So 23.01.05 15:08 
hallo zusammen.

folgendes:
fuer mein programmiertes spiel verwende ich fuer die figurendarstellung kleine images dieser. so sieht der schwarze bauer z.b. so aus:

mitglied.lycos.de/lt...k/BauerSchwarz_T.bmp

die farbpalette ist 24 bit, die farbe rosa ist transparent und delphi kann das teil wunderbar korrekt darstellen.

nun habe ich zur markierung einer figur einen blauen rahmen um diese gezeichnet. das sieht folgendermassen aus:

mitglied.lycos.de/lt...uerSchwarz_T_Sel.bmp

die farbpalette ist erneut 24 bit, die farbe gruen ist hier transparent (anstelle von rosa) und delphi stellt das teil nicht mehr transparent dar! scheint an der zusaetzlichen farbe fuer den rahmen zu liegen - keine ahnung. alle modifikationen habe ich mit iconedit pro gemacht und der zeigt mir auch an, dass das zweite image ebenso einwandfrei funktioniert.

was laeuft da schief? ohnehin wundert mich eines: iconedit scheint die bmp-dateien immer mit 8 bit abzuspeichern, das konnte delphi nicht anzeigen. erst nachdem ich sie auf 24 bit nachtraeglich "raufgedreht" habe mit einer bildbearbeitung, konnten die grafiken transparent in delphi angezeigt werden. bei den neuen images mit rahmen klappt aber gar nichts mehr... vielleicht sollte ich ein anderes prog verwenden? wer kennt eines, das bmp einlesen und abspeichern kann, transparenz beherrscht und eine schoene grosse rasterdarstellung des bildes zur pixelgenauen modifikation liefert (wie iconedit pro)?
NeoInDerMATRIX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 245

Win95, Win98(+se), WinNT, Win2000, WinME, WinXP(+pro), VISTA, Linux(SuSe), DOS [MultiMon(3)], Vista
D6 PeE + (FP 2.0l) + D3 Pe + D2005+ D2006 Arch
BeitragVerfasst: So 23.01.05 15:30 
Hi,

warum machst du bei der Image die Tranzparente Farbe nicht auch Rosa?

Cu
Neo
mick Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 159



BeitragVerfasst: So 23.01.05 15:54 
weil ich zu faul war. letztlich muss das aber auch egal sein, denn auf die definition kommt es doch an, oder?

ciao,
mijozi.
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: So 23.01.05 15:55 
Aus der Hilfe zu TBitmap.TransparentColor:
Zitat:
When the TransparentMode property is set to tmAuto (default), TransparentColor returns the color of the first pixel in the bitmap image data. For "bottom-up" bitmaps, the first pixel is the bottom leftmost pixel shown onscreen. For "top-down" bitmaps (less common), the first pixel is in the top left corner shown onscreen.

If TransparentColor is assigned, the TransparentMode is automatically set to tmFixed so that the new transparent color can be used later. If you want TransparentColor to disregard any assignments and return the bottom leftmost pixel color again, set TransparentMode to tmAuto.
Also ändere mal das TransparentColor-Property vom Bitmap. Das geht bei TImage aber nur im Quellcode, wenn ich das richtig sehe.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
mick Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 159



BeitragVerfasst: So 23.01.05 16:41 
das hoert sich interessant an. es erklaert wohl auch, warum ausgerechnet der blaue rahmen um das jeweilige image herum transparent gemacht wurde!

nur:
die farbe fuer transparenz habe ich jetzt bei allen images auf (reines) rot initialisiert (alle images sind also im hintergrund rot als "signal" fuer transparenz). wie kann ich das jetzt delphi mitteilen, so dass delphi nicht weiter blau (vom rahmen) nimmt?

ciao,
mijozi.
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: So 23.01.05 17:01 
mick hat folgendes geschrieben:
es erklaert wohl auch, warum ausgerechnet der blaue rahmen um das jeweilige image herum transparent gemacht wurde!
Stimmt, ist nämlich der Pixel links unten.

mick hat folgendes geschrieben:
nur:
die farbe fuer transparenz habe ich jetzt bei allen images auf (reines) rot initialisiert (alle images sind also im hintergrund rot als "signal" fuer transparenz). wie kann ich das jetzt delphi mitteilen, so dass delphi nicht weiter blau (vom rahmen) nimmt?
Meinst du die TImage-Komponenten oder die Bitmaps als Dateien?
Ich sagte ja schon, daß du im Quellcode die Transparenz ändern musst, weil es keine Möglichkeit gibt, zur Designzeit über den ObjectInspector auf die TBitmap-Klasse vom TImage zuzugreifen. Also z.B. im OnCreate alle TImages durchgehen und die Transparenz der enthaltenen TBitmap-Klasse (TImage.Picture.Bitmap, IIRC) zu ändern.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
mick Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 159



BeitragVerfasst: So 23.01.05 18:27 
(info: mein spielbrett: habe panel, darauf dann ein gr. spielfeldimage (Spielfeld1I) und 64 kleine figurenimages. diese images will ich nun erreichen.)

in formcreate:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
  // Block: Transparenz-Farbe der Figurenimages definieren

  // Auf Spielfeld
  for i := 0 to SpielfeldPanel.ControlCount - 1 do
   if (SpielfeldPanel.Controls[i] is TImage) then
    if (TImage(SpielfeldPanel.Controls[i]).Name <> 'Spielfeld1I') then begin
     // Keine automatische Erkennung der transparenten Farbe, sondern manuelle Festlegung
     TImage(SpielfeldPanel.Controls[i]).Picture.Bitmap.TransparentMode := tmFixed;
     // Die rote Farbe bei den Figurenimages ist die "Signalfarbe" fuer Transparenz
     TImage(SpielfeldPanel.Controls[i]).Picture.Bitmap.TransparentColor := clRed;
    end;



das klappt nicht. meine images mit blauem rahmen und roter transparenz-farbe werden nicht transparent angezeigt.
aendere ich die bmp-bilder so ab, dass ich ein rotes transpar.-pixel unten links mache, dann klappt es. die anweisungen oben greifen also nicht. warum?

ciao,
mijozi.