AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TBitmap bleibt leer

Ein Thema von Hazardos · begonnen am 9. Jul 2006 · letzter Beitrag vom 10. Jul 2006
Antwort Antwort
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#1

TBitmap bleibt leer

  Alt 9. Jul 2006, 23:32
Hallo, ich habe folgenden Quelltext:

Delphi-Quellcode:
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;
das Problem ist, dass das Resultat ausbleibt wenn ich die Zeile
<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
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#2

Re: TBitmap bleibt leer

  Alt 9. Jul 2006, 23:39
Hallo Jörn,

woher soll das TBitmap-Objekt die Größe kennen, wenn du sie nicht vorgibst?

Delphi-Quellcode:
bmp := TBitmap.Create;
bmp.Width := gewuenschte_Breite;
bmp.Height := gewuenschte_Hoehe;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#3

Re: TBitmap bleibt leer

  Alt 9. Jul 2006, 23:46
Stimmt, das hab ich hier vergessen...
Der gepostete Quelltext ist nur eine Vereinfachung des Originals, welches die Größenzuweisung natürlich enthält.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: TBitmap bleibt leer

  Alt 9. Jul 2006, 23:55
Du solltest auch das richtige Pixel-Format setzen:

Delphi-Quellcode:
bmp := TBitmap.Create;
bmp.Width := 100;
bmp.Height := 100;
bmp.PixelFormat := pf24Bit; // <<--- hier
Gruß Hawkeye
  Mit Zitat antworten Zitat
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#5

Re: TBitmap bleibt leer

  Alt 10. Jul 2006, 15:47
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?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: TBitmap bleibt leer

  Alt 10. Jul 2006, 15:52
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:
  bmp.PixelFormat := pf24bit; zuvor ist das PixelFormat = pfDevice und somit ist es nicht möglich mit scanline darauf zu zugreifen (siehe hilfe)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#7

Re: TBitmap bleibt leer

  Alt 10. Jul 2006, 22:43
Okay, ich hatte einen kleinen Flüchtigkeitsfehler beim Setzen des Pixel-Formats drin...
Dankeschön für Eure Hilfe!!! :-*
  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 04:11 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