![]() |
TBitmap bleibt leer
Hallo, ich habe folgenden Quelltext:
Delphi-Quellcode:
das Problem ist, dass das Resultat ausbleibt wenn ich die Zeile
var bmp : TBitmap;
x,y : integer; p : pbytearray; begin bmp := TBitmap.Create; bmp.LoadFromFile('C:\test.bmp'); bmp.width := 100; bmp.height := 100; for y := 0 to bmp.Height - 1 do begin p := bmp.ScanLine[y]; for x := 0 to bmp.Width*3 - 1 do p[x] := Random (255); end; Image1.Picture.Assign(bmp); end; <bmp.LoadFromFile('C:\test.bmp');> entferne. Ich könnte jetzt sicherlich mogeln um das Problem zu umgehen, aber dadurch werde ich ja nicht schlauer... Wär super wenn einer von euch mir weiterhelfen könnte (Ursache, Lösung)... MfG Jörn |
Re: TBitmap bleibt leer
Hallo Jörn,
woher soll das TBitmap-Objekt die Größe kennen, wenn du sie nicht vorgibst?
Delphi-Quellcode:
Gruß Hawkeye
bmp := TBitmap.Create;
bmp.Width := gewuenschte_Breite; bmp.Height := gewuenschte_Hoehe; |
Re: TBitmap bleibt leer
Stimmt, das hab ich hier vergessen...
Der gepostete Quelltext ist nur eine Vereinfachung des Originals, welches die Größenzuweisung natürlich enthält. |
Re: TBitmap bleibt leer
Du solltest auch das richtige Pixel-Format setzen:
Delphi-Quellcode:
Gruß Hawkeye
bmp := TBitmap.Create;
bmp.Width := 100; bmp.Height := 100; bmp.PixelFormat := pf24Bit; // <<--- hier |
Re: TBitmap bleibt leer
Ne, das hat auch nichts gebracht... Ich denke, dass der Pointer von Scanline nicht zugewiesen werden kann, da die bitmap ja noch leer ist. Vielleicht müsste man sie erst irgendwie initialisieren.... aber wie?
|
Re: TBitmap bleibt leer
Das Bitmap ist nicht leer. Das Bitmap ist einfach nur einfarbig, aber nicht leer.
@Hazardos. Was soll denn das Resultat sein? Und warum lässt du die x-Schleife bis zu einer Breite * 3 durchlaufen? Willst du anderen Speicher überschreiben oder hab ich da was übersehen? Ah, ich seh warum. Du verwendest ein ByteArray anstelle eines TRGBTribleArrays bei mir funktioniert es übrigens wenn ich nach dem setzen der Bildgröße folgendes einfüge:
Delphi-Quellcode:
zuvor ist das PixelFormat = pfDevice und somit ist es nicht möglich mit scanline darauf zu zugreifen (siehe hilfe)
bmp.PixelFormat := pf24bit;
|
Re: TBitmap bleibt leer
Okay, ich hatte einen kleinen Flüchtigkeitsfehler beim Setzen des Pixel-Formats drin...
Dankeschön für Eure Hilfe!!! :-* |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:17 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