Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Kleines Grafik Verständnissproblem (https://www.delphipraxis.net/156529-kleines-grafik-verstaendnissproblem.html)

Kenny77 5. Dez 2010 18:51

Kleines Grafik Verständnissproblem
 
Tach Leute...

ich habe seit kurzem Delphi im Studium (Nur Grundkenntnisse werden gelehrt).
Da sagt mein Prof zu mir er habe es nicht geschafft folgendes Problem zu lösen.

Bei dem Versuch einen roten Kreis in ein mit einem schwarz-weiß Bild (xxx.bmp) bestücktes Image zu zeichnen, erscheint der Kreis nur in Grau. In der Kopie des Images auf Image3 geht es wiederum.
Ich habe das Problem schon für meine Verhältnisse gut gelöst wie ich finde, indem ich anstatt :
Code:
...
  image1.Picture.LoadFromFile('1sw.bmp');
  image2.Picture.LoadFromFile('2sw.bmp');
...
einfach folgendes gemacht habe :
Code:
var Bmp1 : TBitmap;
...
  bmp1:=TBitmap.Create;                
  bmp1.LoadFromFile('1sw.bmp');                
  image1.Canvas.Draw(0,0,bmp1);            
                                             
//                   Bild 2                 
  bmp1.LoadFromFile('2sw.bmp');              
  image2.Canvas.Draw(0,0,bmp1);
...

Nun da ich weiter kommen will als Maschinenbauinformatik es verlangt, möchte ich nun auch verstehen warum Version 1 nicht geht und Version 2 problemlos nen roten Kreis auf das Image1 und 2 zeichnet.
Vielleicht kann mich ja jemand von euch erleuchten :?:

Bummi 5. Dez 2010 19:09

AW: Kleines Grafik Verständnissproblem
 
wenn Du das Pixelformat nach dem Laden des Bildes entsprechend setzt funktioniert auch Variante 1.

Image1.Picture.Bitmap.PixelFormat:=pfDevice;
//oder auch pf24Bit oder pf24Bit;

Ein erstelltest Bitmap hat default pfDevice

rollstuhlfahrer 5. Dez 2010 19:14

AW: Kleines Grafik Verständnissproblem
 
Ich tippe mal schwer auf ein 256 Graustufen-Bitmap. Wenn du das Bild lädst, wird bei Image1.Picture.Bitmap das PixelFormat auf einen definierten Wert gesetzt (Hilfe). Dieser gibt an, dass es sich in deinem Fall um ein 256-Graustufen-Bitmap handelt. Wenn du jetzt das Bild kopierst, dann bekommst du in deinem 3. Bild keine 1:1-Kopie. Da in deinem 3. Bild das PixelFormat Farben zulässt. Änder mal nach dem Laden des Bildes das PixelFormat auf pf24bit (24bit Farben = 256*256*256 Farben). Dann sollte es gehen.

Bernhard

Kenny77 5. Dez 2010 19:22

AW: Kleines Grafik Verständnissproblem
 
Ah wunderbar, hat auch geklappt.

jetzt hab ich auch verstanden warum.
ich danke euch für die schnelle hilfe.

gruß Kenny


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 Uhr.

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