Direct2D Built-in Grafikeffekte und Filter nutzen

    • VB.NET
    • .NET (FX) 4.5–4.8

    Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von -Franky-.

      Direct2D Built-in Grafikeffekte und Filter nutzen

      Hi@all

      Mir ist bewusst das man mit den in .NET enthaltenen (ColorMatrix, LockBits/UnlockBits, usw.) und den nicht enthaltenen (GdipDrawImageFX, GdipCreateEffect, GdipBitmapGetHistogram, usw. ) GDI+ Funktionen so einiges an Grafikeffekten und Filter bauen kann. Ich möchte Euch zeigen wie Ihr die insgesamt 65 Direct2D Built-in Grafikeffekte und Filter nutzen könnt. Dazu werden ein paar WIC-APIs und ein paar Direct2D Interfaces verwendet. Es werden keine Verweise oder NuGet-Pakete benötigt. Die Doku zu den Direct2D Built-in Effekten ist hier zu finden: docs.microsoft.com/en-us/windo…direct2d/built-in-effects

      Einige Direct2D Effekte und Filter kann man auch relativ einfach mit .NET schreiben. Andere wären mit .NET eher sehr aufwendig oder sehr langsam. Wichtig: Die meisten Effekte können ab Windows 8 und/oder mit dem "Platform Update for Windows 7" genutzt werden! Ein paar Effekte stehen erst ab Windows 10 zusätzlich zur Verfügung. Siehe dazu Doku zu den Built-in Effekten was unter welcher Windows Version funktioniert! Ich habe in meinem Code keine Extra-Funktion dafür eingebaut, um zu überprüfen unter welcher Windows Version dieser Code ausgeführt wird. Mit einem aktuellem Windows 10, sollten alle 65 Direct2D Effekte und Filter funktionieren. Für den LookupTable3D-Effekt wird eine Fake-3D-LUT verwendet die dem Sample code von docs.microsoft.com/en-us/windo…2d/3d-lookup-table-effect entspricht. Da kann ja jeder selbst experimentieren.

      Ansonsten: Wer Fehler im Code findet darf diese gern Berichtigen und der Code darf auch gern verbessert werden. ;) Falls Interesse Besteht, kann ich das ganze auch für VB6 hier hochladen. Einfach mal mit den Parametern der Effekte spielen oder einfach mal verschiedene Effekte zu einer EffectChain zusammen bauen. Das ganze ist auch eher als Experimentalcode anzusehen und soll nur zeigen wie es funktioniert!

      Der ScreenShot zeigt den, etwas überspitzten ;) , DisplacementMap-Effekt: docs.microsoft.com/en-us/windo…direct2d/displacement-map
      Bilder
      • Direct2DEffects.png

        525,76 kB, 817×528, 127 mal angesehen
      Dateien
      Mfg -Franky-

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „-Franky-“ ()

      Direct2D Built-in Grafikeffekte und Filter nutzen, etwas erweitert

      Hi@all

      Ich habe die Funktion BitmapToIWICBitmap so umgebaut das diese jetzt die Funktion CreateBitmapFromMemory des Interfaces IWICImagingFactory nutzt um ein .NET-Bitmap in ein IWICBitmap zu konvertieren. Dadurch werden nun auch .NET-Bitmaps im PARGB-Format korrekt verarbeitet. Die alte Funktion per CreateBitmapFromHBITMAP hab ich aber drin gelassen (Kommentar beachten).

      Die Funktion CreateD2D1CompositeEffect habe ich umgebaut, da diese auch mehr als 2 ID2D1Images verarbeiten kann. Und zu guter letzt habe ich noch einen weiteren zusammen gesetzten Effekt (docs.microsoft.com/en-us/windows/win32/direct2d/drop-shadow) zum testen eingebaut (ohne FloodEffect).

      Viel Spaß beim testen. :)
      Dateien
      Mfg -Franky-