Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

Directx bitmap stretchen/Skalieren

  Alt 2. Jan 2014, 01:55
Hab mich im Net fast dumm gesucht..
Wie kann ich ein Surface zur Laufzeit stretchen ohne dieses zwischen zu speichern?

Das Bitmap generiere ich auf dieser weise..

Delphi-Quellcode:
procedure TForm1.btnCaptureClick(Sender: TObject);
var
  Surface: IDirect3DSurface9;
  ARect: TRect;
  Mode: D3DDISPLAYMODE;
  p: TPoint;

begin
  CaptureX.FDevice.GetDisplayMode(0, Mode);

  if (CaptureX.FDevice.CreateOffscreenPlainSurface(
      Mode.Width,
      Mode.Height, D3DFMT_A8R8G8B8,
      D3DPOOL_SCRATCH, Surface, nil) = S_OK) then
  begin
    CaptureX.FDevice.GetFrontBufferData(0, Surface);

    ARect := clientRect;
    P := ClientToScreen(Point(clientrect.Left, clientrect.Top));
    SetRect(ARect, p.x, p.y, p.x + ARect.right, p.y + ARect.bottom);


    D3DXSaveSurfaceToFileW('D:\paper.bmp', D3DXIFF_BMP, Surface, nil, @ARect);
  end;

  Timer1.Enabled := False;

end;
Bevor ich das Teil jetzt abspeichere möchte ich den Surface inklusive Inhalt auf eine Größe von 64x48 skalieren

gruss
  Mit Zitat antworten Zitat