Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#19

AW: Directx bitmap stretchen/Skalieren

  Alt 3. Jan 2014, 00:05
Theoretisch müsste es doch reichen wenn man die Daten im source in ein Bitmap kopiert
und dieses dann mit StretchBlt verkleinert und dann abspeichert
Genau, so dachte ich mir das.
in etwa auf diese weise.

Delphi-Quellcode:
  
  scrSurface.LockRect(LockedRect, @ARect, 0);
  BitsPerPixel := GetDeviceCaps(GetWindowDC(GetDesktopWindow) , BITSPIXEL);

  BMP := TBitmap.Create;
  BMP.Width := Screen.Width;
  BMP.Height := Screen.Height;

  case BitsPerPixel of
      8 : BMP.PixelFormat := pf8bit;
      16: BMP.PixelFormat := pf16bit;
      24: BMP.PixelFormat := pf24bit;
      32: BMP.PixelFormat := pf32bit;
  end;

  p := Cardinal(LockedRect.pBits);

  for i := 0 to Screen.Height - 1 do
  begin
    CopyMemory(BMP.ScanLine[i], Ptr(p), Screen.Width * BitsPerPixel div 8);
    p := p + LockedRect.Pitch;
  end;

  BMP.SaveToFile('D:\Test.bmp');
  BMP.Free;
  
  scrSurface.UnlockRect;
natürlich ohne zu speichern das BMP müsste dann noch gestretcht werden.

EDIT:
Geht auch nicht wirklich.

gruss

Geändert von EWeiss ( 3. Jan 2014 um 01:24 Uhr)
  Mit Zitat antworten Zitat