AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Directx bitmap stretchen/Skalieren
Thema durchsuchen
Ansicht
Themen-Optionen

Directx bitmap stretchen/Skalieren

Ein Thema von EWeiss · begonnen am 2. Jan 2014 · letzter Beitrag vom 4. Jan 2014
 
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Directx bitmap stretchen/Skalieren

  Alt 2. Jan 2014, 03:52
Edit: Kommando zurück. Hiermit kannst du das Originalsurface auf ein anderes Surface zeichnen:
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

Du musst dir also vorher nur ein neues Surface mit einer Größe von 64x48 erstellen.
Ja und das habe ich versucht.

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

begin
  CaptureX.FDevice.GetDisplayMode(0, Mode);
  //Source
  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);

      DestRect.Left := 0;
      DestRect.Top := 0;
      DestRect.Right := 64;
      DestRect.Bottom := 48;

      // Dest
      CaptureX.FDevice.CreateOffscreenPlainSurface(
        DestRect.Right,
        DestRect.Bottom, D3DFMT_A8R8G8B8,
        D3DPOOL_SCRATCH, SurfaceDest, nil);

      CaptureX.FDevice.GetFrontBufferData(0, SurfaceDest);

      CaptureX.FDevice.StretchRect(Surface, @ARect, SurfaceDest, @DestRect, D3DTEXF_NONE);

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

  Timer1.Enabled := False;

end;
Neues Surface erstellt und dann versucht vom source ins dest zu kopierrn.
Es gab zwar ein Bild aber 64x48 vom Desktop an der 0,0 Position (siehe Anhang)

hab auch UpdateSurface getestet
Zitat:
Copies rectangular subsets of pixels from one surface to another.
Muss weiter probieren
Irgendwas scheint da wieder zu fehlen


gruss

Geändert von EWeiss (11. Jul 2019 um 15:42 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz