AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Desktop-Overlay mit DirectX
Thema durchsuchen
Ansicht
Themen-Optionen

Desktop-Overlay mit DirectX

Ein Thema von hugo1990 · begonnen am 27. Dez 2006 · letzter Beitrag vom 8. Jul 2007
 
Phantom1

Registriert seit: 20. Jun 2003
282 Beiträge
 
Delphi 10.4 Sydney
 
#22

Re: Desktop-Overlay mit DirectX

  Alt 29. Dez 2006, 16:10
Für die Umwandlungen in YUY2, UYVY und I420 hab ich vor einiger Zeit eine Unit geschrieben (siehe Anhang). Man braucht jedoch die GR32 Komponenten, da ich das TBitmap32 benutze. Mit ein paar änderungen an meinem Code würde auch ein normales TBitmap funktionieren.
Delphi-Quellcode:
function TForm1.CopyImageToSurface(Bmp32: TBitmap32; surface: IDirectDrawSurface7): Boolean;
var ddsd: TDDSURFACEDESC2; src, dest: Pointer;
begin
  Result:=False;
  FillChar(ddsd, SizeOf(ddsd), 0);
  ddsd.dwSize:=SizeOf(ddsd);
  if FAILED(surface.Lock(nil, ddsd, DDLOCK_SURFACEMEMORYPTR or DDLOCK_WAIT, 0)) then
    Exit;
  src:=Bmp32.PixelPtr[0, 0];
  dest:=ddsd.lpSurface;
  case ddsd.ddpfPixelFormat.dwFlags of
    DDPF_RGB:
      case ddsd.ddpfPixelFormat.dwRGBBitCount of
        32: Move(src^, dest^, ddsd.dwHeight*ddsd.dwWidth*4);
        24: Conv32to24(src, dest, ddsd.dwWidth, ddsd.dwHeight);
        16: if ddsd.ddpfPixelFormat.dwGBitMask=$03E0 then
              Conv32to15(src, dest, ddsd.dwWidth, ddsd.dwHeight)
            else
              Conv32to16(src, dest, ddsd.dwWidth, ddsd.dwHeight);
      end;
    DDPF_FOURCC:
      case ddsd.ddpfPixelFormat.dwFourCC of
        YUY2: ARGBtoYUY2(src, dest, ddsd.dwWidth, ddsd.dwHeight);
        UYVY: ARGBtoUYVY(src, dest, ddsd.dwWidth, ddsd.dwHeight);
        I420: ARGBtoI420(src, dest, ddsd.dwWidth, ddsd.dwHeight);
      end;
  end;
  surface.Unlock(nil);
  Result:=True;
end;
Angehängte Dateien
Dateityp: pas uconvert_769.pas (8,3 KB, 49x aufgerufen)
  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 16:35 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