Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   'leeres' Bitmap erstellen? (https://www.delphipraxis.net/86713-leeres-bitmap-erstellen.html)

LeoSam 18. Feb 2007 13:06


'leeres' Bitmap erstellen?
 
Hallo,

Ich habe ein Image (Image1) erstellt und möchte nun ein Bild "reinzeichnen", beispielsweise einen Farbverlauf

Delphi-Quellcode:
procedure TForm1.Bild_zeichnen;
type
  PixArray = Array [1..3] of Byte;
var
  p: ^PixArray;
  h,w: Integer; bit: TBitmap;
begin
  bit := image2.Picture.Bitmap;     //Was muss hier stehen???
  bit.Height := 100;
  bit.Width := 100;
  image1.Width := 100;
  image1.Height := 100;

  for h:=0 to Bit.Height-1 do
  begin
    p:= Bit.ScanLine[h];
    for w:=0 to Bit.Width-1 do
    begin
      p^[3]:=255;                    //
      p^[2]:=w;                      //  Beispiel: Farbverlauf von rot nach gelb
      p^[1]:=0;                      //
      Inc(p);
    end;
  end;

  image1.Picture.Bitmap := bit;

end;
Das Problem:
Ich wusste nicht, was ich "bit" am Anfang zuweisen musste, deswegen habe ich ein neues Image (Image2) erstellt und 'bit' den (leeren?) Inhalt von Image2 zugewiesen...
Wenn ich vorher ein Bild in das Image2 geladen habe funktioniert es, wenn nicht wird beim Image1 einfach alles weiß, kann mir jemand sagen warum und was ich dem Bitmap 'bit' am Anfang zuweisen muss??

Vielleicht stehe ich grad total auf dem Schlauch aber ich weiß einfach nicht weiter :?:

Danke schon mal im Vorraus
MFG leo

Neutral General 18. Feb 2007 13:09

Re: 'leeres' Bitmap erstellen?
 
Delphi-Quellcode:
var Bit: TBitmap;

Bit := TBitmap.Create;
Bit.Width := 800;
Bit.Height:= 600;
Das ist ein 800*600Pixel großes leeres (weißes) Bitmap.

EDIT: Achso.. LEER ... Sag das doch *g* :mrgreen:
Blawen unter mir hat Recht.. Hab da was falsch verstanden, bzw zu schnell gelesen und zu wenig verstanden :oops:

Gruß
Neutral General

blawen 18. Feb 2007 13:11

Re: 'leeres' Bitmap erstellen?
 
Ich habe grad kein Delphi zur Hand, darum kann ich nur mal raten:
Code:
bit := NIL;

DP-Maintenance 18. Feb 2007 13:12

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Open-Source" nach "Multimedia" verschoben.
Es handelt sich nicht um ein Open-Source-Programm.

turboPASCAL 18. Feb 2007 13:25

Re: 'leeres' Bitmap erstellen?
 
Zitat:

Zitat von blawen
Ich habe grad kein Delphi zur Hand, darum kann ich nur mal raten:
Code:
bit := NIL;

Damit verschiebst Du das Bitmap in das Nirvana. (Simple: nil = nix) :mrgreen:

LeoSam 18. Feb 2007 15:12

Re: 'leeres' Bitmap erstellen?
 
ok, danke schon mal aber es funktioniert leider noch nicht.
Ich habe beide Möglichkeiten ausprobiert
bei
Delphi-Quellcode:
bit := nil;
kommt eine diverse Fehlermeldung wenn ich Höhe und Breite des bitmaps setzen will und bei
Delphi-Quellcode:
bit := TBitmap.create;
wird im Image wieder nur eine weiße Fläche ausgegeben ?!? :?
seltsam.. wenn einem noch was dazu einfällt wär ich dankbar

turboPASCAL 18. Feb 2007 15:28

Re: 'leeres' Bitmap erstellen?
 
Zitat:

Zitat von turboPASCAL
Zitat:

Zitat von blawen
Ich habe grad kein Delphi zur Hand, darum kann ich nur mal raten:
Code:
bit := NIL;

Damit verschiebst Du das Bitmap in das Nirvana. (Simple: nil = nix) :mrgreen:

Das schreibe ich doch nicht umsonst?


Zitat:

Zitat von LeoSam
Delphi-Quellcode:
bit := TBitmap.create;
wird im Image wieder nur eine weiße Fläche ausgegeben ?!? :?
seltsam.. wenn einem noch was dazu einfällt wär ich dankbar

Ja, denn wenn ein Bitmap mit Create erstellt wurde ist es weis.
Du kannst dann mit diversen Zeichenopperationen dann deine Grafik darauf erstellen. (Siehe [oh]Canvas, TBitmap[/oh])

Delphi-Quellcode:
procedure TForm1.Bild_Zeichnen;
type
  PixArray = Array [1..3] of Byte;
var
  p: ^PixArray;
  h,w: Integer; bit: TBitmap;
begin
  bit := TBitmap.Create;
  bit.PixelFormat := pf24Bit;
  bit.Height := 100;
  bit.Width := 100;

  for h := 0 to Bit.Height - 1 do
  begin
    p := Bit.ScanLine[h];
    for w := 0 to Bit.Width - 1 do
    begin
      p^[3]:=255;                    //
      p^[2]:=w;                      //  Beispiel: Farbverlauf von rot nach gelb
      p^[1]:=0;                      //
      Inc(p);
    end;
  end;

  Image1.Picture.Bitmap.Assign(bit);

end;
;)

LeoSam 18. Feb 2007 16:02

Re: 'leeres' Bitmap erstellen?
 
Vielen Dank, das PixelFormat hat mir noch gefehlt... :oops:
geht jetzt :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:50 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