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
Seite 11 von 16   « Erste     91011 1213     Letzte »    
EWeiss
Projekt entfernt..

Geändert von EWeiss (24. Jul 2019 um 04:48 Uhr)
 
EWeiss
 
#101
  Alt 28. Mär 2017, 12:59
Zitat:
Also, ich begrüße es, daß Emil sich einer solchen Herausforderung stellt
Ich versuche ja alles damit es läuft das kannst du schon daran erkennen wie viele neue Threads ich in letzter zeit erstellt habe.
Alles kann man halt nicht wissen.
Da ist man wie vor gestoßen.

Aber gut sei's drum

gruss
  Mit Zitat antworten Zitat
EWeiss
 
#102
  Alt 28. Mär 2017, 13:41
Sorry nochmal..
Hier ein PIC welchen Unterschied es macht ob man DrawImage oder Cached Bitmap verwendet.

120 Bilder werden gezeichnet.
Oben ist DrawImage.
Bin mir nur nicht klar darüber wie gdipDrawImageRectRectI mir gdipDrawCachedBitmap ersetzen soll.
Ich brauche die zweite Dimension von gdipDrawImageRectRectI.

Das Teil ist 3x mal so schnell. 25% CPU / 3 = 8,3 damit könnte ich leben.
Hmmm... muss denken . LOL.

gruss

Geändert von EWeiss (31. Mär 2017 um 18:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#103
  Alt 28. Mär 2017, 13:47
Du benutzt gdipDrawImageRectRectI quasi genauso wie gdipDrawCachedBitmap nur dass du nicht 10 einzelne Bilder hast sondern 1 Bild aus dem du nur einen Ausschnitt zeichnest, den du darstellen willst.
Dafür gibts die src und dest Parameter. srcX/Y/Width/Height sind das Rechteck dass aus dem Bild mit den Einzelbildern ausgeschnitten wird und destX/Y/Width/Height ist das Rechteck in dem der ausgeschnittene Teil dargestellt werden soll. Also wahrscheinlich 0,0,Einzelbild.Width,Einzelbild.Height.

Oder hab ich was falsch verstanden?
Michael
  Mit Zitat antworten Zitat
EWeiss
 
#104
  Alt 28. Mär 2017, 13:53
Du benutzt gdipDrawImageRectRectI quasi genauso wie gdipDrawCachedBitmap nur dass du nicht 10 einzelne Bilder hast sondern 1 Bild aus dem du nur einen Ausschnitt zeichnest, den du darstellen willst.
Dafür gibts die src und dest Parameter. srcX/Y/Width/Height sind das Rechteck dass aus dem Bild mit den Einzelbildern ausgeschnitten wird und destX/Y/Width/Height ist das Rechteck in dem der ausgeschnittene Teil dargestellt werden soll. Also wahrscheinlich 0,0,Einzelbild.Width,Einzelbild.Height.

Oder hab ich was falsch verstanden?
ImageRectI
Delphi-Quellcode:
GDIP_DrawImageRectRectI(PngGraphics, PngImage, X, Y, w, h, w * integer
  (CurPngPlayInfo.PngFrame) - w, 0, w, h, 2, nil, False, nil);
gdipDrawCachedBitmap hat nur die Weite und die höhe.
Dieser Part ist besonders wichtig weil er das Bild im Bild von der Aktuellen Frame Position zeichnet.
Delphi-Quellcode:
w * integer
  (CurPngPlayInfo.PngFrame) - w
Ich möchte vom GDIP_DrawImageRectRectI weg und anstelle dessen gdipDrawCachedBitmap verwenden weil es 3x mal schneller ist.
Glaube aber das es so nicht umsetzbar ist.

gruss

Geändert von EWeiss (28. Mär 2017 um 13:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#105
  Alt 28. Mär 2017, 13:59
Kannst du grad nochmal sagen wo es grad hängt. Bin grad etwas raus sorry.
Der Aufruf sieht doch in Ordnung aus. Bis auf den vorletzten Parameter zumindest, dem du laut Internet eine Callback Funktion übergeben sollst.
Da passt false dann nicht.
Michael
  Mit Zitat antworten Zitat
EWeiss
 
#106
  Alt 28. Mär 2017, 14:03
Kannst du grad nochmal sagen wo es grad hängt. Bin grad etwas raus sorry.
Der Aufruf sieht doch in Ordnung aus. Bis auf den vorletzten Parameter zumindest, dem du laut Internet eine Callback Funktion übergeben sollst.
Da passt false dann nicht.
Es geht darum die Geschwindigkeit bzw. die Auslastung der CPU zu minimieren.
Die Funktion gdipDrawCachedBitmap ist dreimal so schnell wie die von mir aktuell verwendete GDIPDrawImageRectRectI.
Da gdipDrawCachedBitmap nur zwei Parameter hat Weite\Höhe habe ich das Problem GDIPDrawImageRectRectI zu ersetzen.

Muss mal sehn vielleicht finde ich noch eine anderer Lösung.

Zitat:
Da passt false dann nicht.
false ist OK
callback: BOOL; callbackData: Pointer

gruss

Geändert von EWeiss (28. Mär 2017 um 14:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#107
  Alt 28. Mär 2017, 14:19
Achso, ich habs genau andersrum verstanden.
In der APNG Datei sind doch so viele Einzelbilder enthalten wie Frames in der Animation wenn ich das richtig verstanden habe.
Dann musst du ja nur alle Einzelbilder laden und nacheinander mit gdipDrawCachedBitmap zeichnen.

Wieso baust du dir denn überhaupt ein Bild in dem alle Einzelbilder enthalten sind um sie dann quasi beim Zeichnen wieder zu trennen?
Michael
  Mit Zitat antworten Zitat
EWeiss
 
#108
  Alt 28. Mär 2017, 14:31
Zitat:
Wieso baust du dir denn überhaupt ein Bild in dem alle Einzelbilder enthalten sind um sie dann quasi beim Zeichnen wieder zu trennen?
Baue ich ja nicht das ist das Standard Format von APNG.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

 
Delphi 11 Alexandria
 
#109
  Alt 28. Mär 2017, 14:38
Baue ich ja nicht das ist das Standard Format von APNG.
In der Datei stehen ein Standardbild und für jeden Frame ein weiterer Chunk mit dem PNG Bild für diesen Frame. Dort gibt es kein großes Bild.
Sebastian Jänicke
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#110
  Alt 28. Mär 2017, 14:40
Im Zweifelsfall kannst du halt auch aus dem großen Bild mit allen Frames beim Laden manuell eine Liste von Einzelbildern erstellen und diese dann mit gdipDrawCachedBitmap Zeichnen.
Michael
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 11 von 16   « Erste     91011 1213     Letzte »    


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 17:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz