AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte AnimatePNG
Thema durchsuchen
Ansicht
Themen-Optionen

AnimatePNG

Ein Thema von EWeiss · begonnen am 20. Mär 2017 · letzter Beitrag vom 8. Jun 2018
Antwort Antwort
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.055 Beiträge
 
Delphi 12 Athens
 
#1

AW: AnimatePNG

  Alt 24. Mär 2017, 08:11
Kann sein ist halt abhängig vom Hintergrund des Desktop.
Ich finde es halt nicht so günstig das so stark transparent zu machen.

Screenshots im Anhang...
Miniaturansicht angehängter Grafiken
animatepngfilled.jpg   animatepngnone.jpg  
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: AnimatePNG

  Alt 24. Mär 2017, 16:10
Kann sein ist halt abhängig vom Hintergrund des Desktop.
Ich finde es halt nicht so günstig das so stark transparent zu machen.

Screenshots im Anhang...
Ist ja kein Problem.
Aber dafür gibt es ein Lösung.

Erstelle eine leere *.PGN ohne Transparenz Größe Bsp. 50x50 komplett schwarz
und Speicher diese in den Skin Ordner mit den gleichen Name wie das Dialog Panel.
Und schon ist es gut "DlgPanel.png"

Kannst auch rot oder anders machen.

Bin ja flexibel.
Du darfst aber auch gerne deinen eigenen Skin machen davon abgesehen.

Zitat:
bis auf die Groß-/Kleinschreibungsgeschichte
Ah jo bin kein English Man von daher.. Aber ich habe es wenigstens versucht.

Zitat:
Schon erstaunlich was man aus Gif-Bildern zaubern kann.
Bei "Normalen Menschen" hat man da schon eine gewisse Achtung vor, da Georg aber fast Blind ist, ist das schon irgendwie Hochachtungsvoll.

gruss

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

n/a Beiträge
 
#3

AW: AnimatePNG

  Alt 24. Mär 2017, 18:00
Das erste Frame wird nun angezeigt mit APNG.
Habe noch ein kleines Problem was die Transparenz angeht die geht natürlich durch die Konvertierungen
HBITMAP > Bitmap Bitmap to GDIPlus Image verloren.

Aber bin guter Hoffnung arbeite daran.

gruss

Geändert von EWeiss (31. Mär 2017 um 18:35 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: AnimatePNG

  Alt 25. Mär 2017, 06:47
APNG Format funktioniert jetzt soweit.
2 Problem stehen noch an.

1. Transparenz wieder herstellen nach
GDIP_CreateBitmapFromHBITMAP(Bitmap, 0, pBitmap);

2. Etwas an der Schraube drehen was die CPU Belastung angeht. (Mache da noch irgend etwas falsch.)
Normalerweise sollte diese Gegen 0% gehen.

Anschließend muss ich noch ein Tool erstellen mit dem man APNG Dateien erstellen kann (Drag-Drop) sollte reichen.

Mein Problem mit der Transparenz ist das ich hier kein TBitmap verwende dem ich einfach das HBitmap als Handle übergeben könnte.
Hab noch nicht die richtige Lösung für das Problem gefunden.

gruss

Geändert von EWeiss (31. Mär 2017 um 18:35 Uhr)
  Mit Zitat antworten Zitat
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#5

AW: AnimatePNG

  Alt 26. Mär 2017, 15:56
Ich las jetzt alle Deine Beiträge durch, Emil, aber eine Aussage konnte ich nicht entdecken, deshalb frage ich danach: Ist es angedacht, irgendwann einmal eine Konvertierungsfunktion von gif nach apng (und ggf. sogar zurück) anzubieten?

Gruß Delphi-Laie
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: AnimatePNG

  Alt 26. Mär 2017, 15:59
Ich las jetzt alle Deine Beiträge durch, Emil, aber eine Aussage konnte ich nicht entdecken, deshalb frage ich danach: Ist es angedacht, irgendwann einmal eine Konvertierungsfunktion von gif nach apng (und ggf. sogar zurück) anzubieten?

Gruß Delphi-Laie
Ja.. Das ist der sinn der Sache.
Zurück nicht hin ja. Gif -> Apng

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: AnimatePNG

  Alt 26. Mär 2017, 19:48
Ich versuche ein HBitmap in ein GDIPlus konformes Format zu bringen

Delphi-Quellcode:
function BitmapToImage(Hdib: HBitmap): Pointer;
var
  lpImg: Pointer;
  bi: tagBITMAPINFO;
  bm: Bitmap;
  BitmapLength: LongWord;
  bmpBits: TBytes;
  DC: HDC;
begin
  Result := nil;

  DC := GetDc(0);

  if Hdib <> 0 then
  begin
    GetObject(Hdib, sizeof(bm), @bm);

    bi.bmiHeader.biSize := SIZEOF(bi.bmiHeader);
    bi.bmiHeader.biWidth := bm.bmWidth;
    bi.bmiHeader.biHeight := -bm.bmHeight;
    bi.bmiHeader.biPlanes := 1;
    bi.bmiHeader.biBitCount := 32;
    bi.bmiHeader.biCompression := BI_RGB;

    BitmapLength := bm.bmWidth * bm.bmHeight * 4;
    SetLength(bmpBits, BitmapLength + 1);

    GetDIBits(DC, Hdib, 0, bm.bmHeight, @bmpBits[0], bi, DIB_RGB_COLORS);

    if @bmpBits[0] <> nil then
    begin
      if Gdip_CreateBitmapFromScan0(bm.bmWidth, bm.bmHeight, bm.bmWidth * 4, PixelFormat32bppARGB,
        @bmpBits[0], lpImg) = OK then
          Result := lpImg;
    end;
    ReleaseDC(0, DC);
  end;
end;
Es läuft alles durch nur beim aufruf von
GDIP_DrawImageRectRectI kracht es mal wieder.

Ich sehen keinen Fehler in meinem Code.
Eventuell TBytes ?

gruss

Geändert von EWeiss (27. Mär 2017 um 19:34 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 11: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