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