Avatar billede zerohero Nybegynder
19. april 2002 - 17:22 Der er 3 kommentarer og
1 løsning

Bitmaps Pointer

Jeg har en funktion der henter en bmp fil fra harddisken og sætter en pointer - alt jeg behøver er at skrive: Pointer := ReadBitmap(filnavn,integer,integer);

funktionen ser således ud...

type
  Trgb = packed record
  r,
  g,
  b: byte;
  end;
  Twrap = array[0..0] of Trgb;
function readbitmap(const filepath: string; var swidth,theight: glsizei): pointer;
const
  szh = sizeof(tbitmapfileheader);
  szi = sizeof(tbitmapinfoheader);
var
  bmpfile : file;
  bfh: Tbitmapfileheader;
  bmi: Tbitmapinfoheader;
  t : byte;
  x, size : integer;
begin
  assignfile(bmpfile,filepath);
  reset(bmpfile,1);
  size := filesize(bmpfile)-szh-szi;
  blockread(bmpfile,bfh,szh);
  if bfh.bftype<>$4d42 then
  raise einvalidgraphic.create('Invalid Bitmap');
  blockread(bmpfile,bmi,szi);

  with bmi do
  begin
    swidth := 256;//biwidth;
    theight := 256;//biheight;
  end;

  getmem(result,size);
  blockread(bmpfile,result^,size);

  for x := 0 to swidth*theight-1 do
  with Twrap(result^)[x] do
  begin
    t := r; r := b; b := t;
  end;
  close(bmpfile);
end;

Det fungere perfekt!!! Nu vil jeg bare gerne gøre det samme med TBitmap (som IKKE er indlæst fra en harddisk) jeg har defineret min TBitmap til MyBitmap, hvordan gør jeg det???... PS: som I kan er swidth og theight unødvendige da de begge er defineret til 256 - og vil altid være defineret til 256 :))...

Håber i kan hjælpe...

ZeroHero
Avatar billede cms Nybegynder
19. april 2002 - 18:40 #1
Altså det du har brug for er en pointer til selve bitmap-dataen? Med farvedybde 8bit eller..?!
Avatar billede zerohero Nybegynder
19. april 2002 - 20:59 #2
Det jeg har brug for en pointer til bitmaps-dataerne (RGB - dataer) Ja det er korrekt :))
Avatar billede borrisholt Novice
19. april 2002 - 22:38 #3
type
  TJcolor    = TRGBTriple;
  pColorLine = ^TColorLine;
  TColorLine = array [0..0] of TJColor;

Function ReadBitmap (Bitmap : TBitmap) : Pointer;
begin
  Result := @pColorLine(Bitmap.ScanLine[0])[0];
end;

Jens B
Avatar billede zerohero Nybegynder
06. juli 2003 - 01:55 #4
Det er vist på tide at jeg får lukket her!!!
Jeg har ikke rigtigt fået et endeligt svar, så jeg tager pointsene tilbage. Håber ikke at det giver sure miner!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester