AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Farbwert zu Dezimal

Ein Thema von EWeiss · begonnen am 28. Mär 2019 · letzter Beitrag vom 3. Apr 2019
Antwort Antwort
Seite 6 von 8   « Erste     456 78      
EWeiss
(Gast)

n/a Beiträge
 
#51

AW: Farbwert zu Dezimal

  Alt 29. Mär 2019, 14:09
kommst du denn jetzt in beide else zweige?

gruss
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#52

AW: Farbwert zu Dezimal

  Alt 29. Mär 2019, 14:17
Ja, aber mit dem Fadingwert von 0.32 häufiger in den else Zweig.
Klaus
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#53

AW: Farbwert zu Dezimal

  Alt 29. Mär 2019, 14:19
Ja, aber mit dem Fadingwert von 0.32 häufiger in den else Zweig.
Ok das funktioniert nicht bei mir.

Das Array als Integer definiert.
a als Byte
_a als SmallInt

komme nie über 127
weder mit fade über 0.5 noch mit drunter.
Ich versteh es nicht.

gruss
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#54

AW: Farbwert zu Dezimal

  Alt 29. Mär 2019, 14:29
Je näher fading zur 1 rückt desto häufiger geht es in den else Zweig.
Bei d = 153 (f=0.6) kann _alpha nicht mehr größer als 127 werden.

alpha max = 255 und _alpha = alpha - d

Wenn man mit der Hilfsvariablen arbeitet muss alpah noch in der Berechnung angepasst werden.

Delphi-Quellcode:
                 if _alpha > 127 then
                   imgSpectrum[x,y] := c or (((alpha - d) -256) shl 24)
                 else
                   imgSpectrum[x,y] := c or ((alpha - d) shl 24);
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#55

AW: Farbwert zu Dezimal

  Alt 29. Mär 2019, 14:37
Hallo EWeiss

in welcher Procedure befindet sich der hier diskutierte Code? In procedure TSpectrum.Release;? Falls Ja: Früher hast du dort SpectrumData2D[] verwendet und jetzt imgSpectrum[]?

Oder ist es eine andere Procedure - und wenn Ja, wo findet man diese in deinem Code?

Wenn es TSpectrum.Release; ist: SpectrumData2D bzw. jetzt imgSpectrum muss natürlich am Eingang zu deiner Procedure mit Daten gefüllt sein, sonst machen die Rechnereien ja gar keinen Sinn.

Zum Testen: Wie früher erwähnt: Du könntest sämtliche VB6 Prozeduren, welche etwas rechen mit dem gleichen Input abfüllen wie deine jeweils entsprechende Delphi Prozedur und dann prüfen was am Ausgang rauskommt. Nur wenn beide Versionen die gleichen Werte liefern, bist du am sicher, dass dein Programm das tut, was das Original schön längst macht .

Alles wird gut.

V.a. wichtig ist, dass du Datentypen nicht mischst. Sonst meckert Delphi (zurecht) noch lange rum.

Mindestens in deiner zuerst veröffentlichten Version sind in TSpectrum.Release; sämtliche Werte im Array SpectrumData2D immer 0 (Null).
Trotzdem malt dein Programm Dinge auf den Schirm. Da stimmt also etwas beim Ablauf nicht.

Ob in deiner Version auch alle Elemente 0 sind kannst du ja leicht testen, indem du
assert( SpectrumData2D[x, y] = 0, 'Oh, nicht Null ;-)' ); einfügst.
Michael Gasser
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#56

AW: Farbwert zu Dezimal

  Alt 29. Mär 2019, 14:40
Und noch ein mal und zum letzten Mal : Die Unterscheidung a > 127 ist im Delphi Code nicht notwendig, da wir im Gegensatz zum VB Code ohne Vorzeichen arbeiten.
Michael Gasser
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#57

AW: Farbwert zu Dezimal

  Alt 29. Mär 2019, 14:41
Zitat:
Bei d = 153 (f=0.6) kann _alpha nicht mehr größer als 127 werden.
So sieht es besser aus
Muss das nochmal genau gegen prüfen.

Dann muss die Vorgehensweise bei den anderen auch im etwa so sein.
Danke dir für die Geduld.

Zitat:
in welcher Procedure befindet sich der hier diskutierte Code? In procedure TSpectrum.Release;? Falls Ja: Früher hast du dort SpectrumData2D[] verwendet und jetzt imgSpectrum[]?
ist s immer noch SpectrumData2D wollte Klaus nur nicht vor den Kopf stoßen (habe es bei mir jedes mal geändert. kein problem.
Zitat:
Trotzdem malt dein Programm Dinge auf den Schirm. Da stimmt also etwas beim Ablauf nicht.
Was soll nicht stimmen ? Ist schon gut so.
Du musst Release von der Zeichenroutine komplett trennen.

es befindet sich dazwischen und manipuliert die Pixel mit denen die aus den Effekten errechneten werden.
So etwas wie ein Plugin innerhalb Draw!

gruss

Geändert von EWeiss (29. Mär 2019 um 14:51 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#58

AW: Farbwert zu Dezimal

  Alt 29. Mär 2019, 15:14
ein letztes update
alpha ist wieder ein Byte (ich fühl mich wohler damit)

Delphi-Quellcode:
           for y:= 0 to h do
             for x := 0 to w do
               begin

                 alpha := ((imgSpectrum[x,y] and $FF000000) shr 24) and $FF;
                 c := imgSpectrum[x,y] and $FFFFFF;

                 if d > alpha then
                   alpha := 0
                 else
                   alpha := alpha - d;

                 if alpha > 127 then
                   imgSpectrum[x,y] := c or ((alpha -256) shl 24)
                 else
                   imgSpectrum[x,y] := c or (alpha shl 24);
               end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#59

AW: Farbwert zu Dezimal

  Alt 29. Mär 2019, 17:11
@Klaus danke für deine Mühe und Einsatz mir zu helfen.
Habe leider noch ein anderes Problem um das zuverlässig testen zu können.

Wenn es dann mal funktioniert gibt es ein Update und die Meldung warum es nicht ging.
Vielleicht können dann andere davon etwas abschauen die ähnliche Probleme haben.

gruss
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#60

AW: Farbwert zu Dezimal

  Alt 29. Mär 2019, 18:32
Delphi-Quellcode:
Was soll nicht stimmen ? Ist schon gut so.
Du musst Release von der Zeichenroutine komplett trennen.

es befindet sich dazwischen und manipuliert die Pixel mit denen die aus den Effekten errechneten werden.
So etwas wie ein Plugin innerhalb Draw!
Das Zeichnen der "Spektrum Daten" funktioniert.

Was in der mir vorliegenden Version nicht funktioniert
Zitat:
Was soll nicht stimmen ?
sind die Effekte. Dieser Teil macht gar nix, da der Input immer imgSpectrum=(0,...0) ist. Wenn du die Funktion Release(welcher Effekt, imgSpectrum) immer an der Stelle Release(welcher Effekt, imgSpectrum=0 ) auswertest, dann kannst du den Effekt auch weglassen.

Aufgrund von deinem
Zitat:
Was soll nicht stimmen ? Ist schon gut so.
hast du den Code offensichtlich inzwischen geändert und die Effekte werden wie du es erwartest gezeichnet. Ich gratuliere dir zum fertigen Programm .
Michael Gasser
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 8   « Erste     456 78      


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 20:22 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