![]() |
Farbwert zu Dezimal
kleine frage
wäre das korrekt? SpectrumData2D[X, Y] definiert als byte a definiert als byte
Delphi-Quellcode:
sollte dann der Alpha wert sein wenn richtig.
//a := (((SpectrumData2D[X, Y] and $FF000000) div $1000000) and 255);
a := ((SpectrumData2D[X, Y] shl 24) and 255); was ist dieses $1000000 bzw.. wie muss ich das zuordnen. Ist der wert noch von nöten bei Shl 24?
Delphi-Quellcode:
$FF000000
Ist klar Schwarz ohne Alphawert. Kann ich mir sparen wenn ich um 24Bit verschiebe oder? Ich muss das auf vernünftige Farbberechnung umlegen das mit den HEX ist alles nicht so das richtige. Überlauf unsigned.. signed. Und dann den richtigen DatenTyp dafür noch finden. Damit kann ich nichts anfangen.
Delphi-Quellcode:
Könnte dabei bitte jemand helfen?
case FEffect of
0: begin d := round(Fade * 255); for Y := 0 to h do begin for X := 0 to w do begin a := (((SpectrumData2D[X, Y] and $FF000000) div $1000000) and 255); a := a - d; if a < 0 then a := 0; c := SpectrumData2D[X, Y] and $FFFFFF; if a > 127 then SpectrumData2D[X, Y] := c or ((a - 256) * $1000000) else SpectrumData2D[X, Y] := c or (a * $1000000); end; end; end; end; Mein Ansatz.
Delphi-Quellcode:
Wie kann ich die 2 Kommentierten Zeilen shiften?
case FEffect of
0: begin d := round(Fade * 255); for Y := 0 to h do begin for X := 0 to w do begin //a := (((SpectrumData2D[X, Y] and $FF000000) div $1000000) and 255); a := ((SpectrumData2D[X, Y] shl 24) and 255); a := a - d; // brauche ich nicht Byte gehen niemals ins minus. //if a < 0 then // a := 0; // c := SpectrumData2D[X, Y] and $FFFFFF; c := SpectrumData2D[X, Y] and RGB(255, 255, 255); if a > 127 then SpectrumData2D[X, Y] := c or ((a - 256) * $1000000) // hier komm ich nicht klar wegen den $1000000 else SpectrumData2D[X, Y] := c or (a * $1000000); // hier komm ich nicht klar wegen den $1000000 end; end; end; end; gruss |
AW: Farbwert zu Dezimal
..ist noch früh aber solltest Du nicht nach rechts shiften?
Du willst aus einem 32bit Value das Highbyte haben. Grüße Klaus |
AW: Farbwert zu Dezimal
Zitat:
gruss |
AW: Farbwert zu Dezimal
.. kein Problem.
Delphi-Quellcode:
sollte in etwas so aussehen:
if a > 127 then
SpectrumData2D[X, Y] := c or ((a - 256) * $1000000) // hier komm ich nicht klar wegen den $1000000 else SpectrumData2D[X, Y] := c or (a * $1000000); // hier komm ich nicht klar wegen den $1000000 end;
Delphi-Quellcode:
if a > 127 then
SpectrumData2D[X, Y] := c or ((a - 256) shl 24) // hier wird ein Byte zu einem 32Bit Value else SpectrumData2D[X, Y] := c or (a shl 24); //dito * $1000000 verschiebt um 24bit nach links end; Grüße Klaus |
AW: Farbwert zu Dezimal
Zitat:
Warum jetzt ShiftLeft? r, g, b nach Links? Ein anderes kannst du bitte noch mal drüber schauen?
Delphi-Quellcode:
gruss
1:
begin d := round(Fade * 10); for Y := 0 to h do begin for X := 0 to w do begin if (X > 0) and (Y > 0) and (X < w - 1) and (Y < h - 1) then begin r := 0; g := 0; b := 0; a := 0; for dy := -1 to 1 do begin for dx := -1 to 1 do begin c := SpectrumData2D[X + dx, Y + dy]; //a := a + (Int64((c and $FF000000) div $1000000) And 255); a := a + (c shr 24) and 255; //r := r + (c and $FF0000) div $10000; r := r + (c and RGB(255, 0, 0)) div 65536; //g := g + (c and $FF00) div $100; g := g + (c and 65280) div 256; b := b + (c and 255); end; end; r := r div 9; g := g div 9; b := b div 9; a := a div 9 - d; c := b or (g * $100) or (r * $10000); if a > 127 then SpectrumData2D[X, Y] := c or ((a - 256) shl 24) else SpectrumData2D[X, Y] := c or (a shl 24); end else SpectrumData2D[X, Y] := 0; end; end; end; |
AW: Farbwert zu Dezimal
Könnte mir jemand sagen ob das jetzt so in Ordnung ist?
Denn so richtig kommt da bei mir nichts an. Das ist das letzte.
Delphi-Quellcode:
gruss
begin
d := round(Fade * 64); Buf := SpectrumData2D; if FSymmetrical then begin o := 0; s := w * 2; end else begin o := 0.5; s := w; end; for Y := 0 to h do begin for X := 0 to w do begin if (X > h) or (Y > w) then continue; cx := X / s - o; cy := Y / h - 0.5; r := round(Sqrt(cx * cx + cy * cy)); dx := round((cx + o + 0.01 * cx * ((r - 1) / 0.5)) * s); dy := round((cy + 0.5 + 0.01 * cy * ((r - 1) / 0.5)) * h); //a := ((Buf[dx, dy] and $FF000000) div $1000000) and 256) - d; a := ((Buf[dx, dy] shr 24) and 256) - d; // muss 256 hier addiert werden oder nicht! //c := Buf[dx, dy] and $FFFFFF; c := Buf[dx, dy] and RGB(255, 255, 255); if a > 127 then // SpectrumData2D[X, Y] := c or ((a - 256) * $1000000) SpectrumData2D[X, Y] := c or ((a - 256) shl 24) else // SpectrumData2D[X, Y] := c or (a * $1000000); SpectrumData2D[X, Y] := c or (a shl 24); end; end; end; |
AW: Farbwert zu Dezimal
.. wieso rechnest Du mit 256 - $FF entspricht 255
Delphi-Quellcode:
es werden hier nicht 256 addiert - das ist eine logische Verknüpfung.
a := ((Buf[dx, dy] shr 24) and 256) - d; // muss 256 hier addiert werden oder nicht!
Hier wird schlicht eine Wert maskiert, vor dem "and " war der Value noch 32bit breit mit der makierung wird erreicht das er nur noch 8Bit breit ist. Daher nehme ich auch an, dass mit 255 maskiert werden sollte. Grüße Klaus |
AW: Farbwert zu Dezimal
Zitat:
Und das steht bei ihm so im Quelltext. Delphi $100 An welcher stelle meinst du denn insbesondere? Das ist der original source
Code:
gruss
//a := ((Buf[dx, dy] and $FF000000) div $1000000) and 256) - d;
|
AW: Farbwert zu Dezimal
Delphi-Quellcode:
a := ((Buf[dx, dy] shr 24) and 256) - d
Code:
wenn Du 256 verwendst - passt das nicht in ein Byte
$AAbbggrr shr 24
$000000AA and $FF $AA
Code:
Grüße
$AAbbggrr shr 24
$000000AA and $100 $000 Klaus |
AW: Farbwert zu Dezimal
Zitat:
Es ist so vom Original übernommen. Werde mir das nochmal genauer ansehen. gruss |
AW: Farbwert zu Dezimal
Delphi-Quellcode:
Erebnis:
var
test32Bit: cardinal; test8Bit: Byte; begin try { TODO -oUser -cConsole Main : Insert code here } test32Bit := $ABCDEF89; test8Bit := (test32Bit shr 24) and $FF; writeLn(intToHex(test8Bit)); test32Bit := $ABCDEF89; test8Bit := ((test32Bit and $FF000000) div $1000000) and 255; writeln(intToHex(test8Bit)); readLn; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; AB AB
Delphi-Quellcode:
Ergebnis:
var
test32Bit: cardinal; test8Bit: Byte; begin try { TODO -oUser -cConsole Main : Insert code here } test32Bit := $ABCDEF89; test8Bit := (test32Bit shr 24) and $FF; writeLn(intToHex(test8Bit)); test32Bit := $ABCDEF89; test8Bit := ((test32Bit and $FF000000) div $1000000) and 256; writeln(intToHex(test8Bit)); readLn; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. AB 00 Grüße Klaus |
AW: Farbwert zu Dezimal
Ja Klaus..
Ich habe nicht behauptet das du falsch liegst sondern das es so im Original steht es ist mir nur nicht aufgefallen. :) gruss |
AW: Farbwert zu Dezimal
Hab dem Thread grad nur überflogen aber ich gehe davon aus, dass es immer noch nicht wirklich klappt?
Denn wenn SpectrumData2D ein Byte-Array (:!:) ist und du 8 oder mehr Bits in irgendeine Richtung shiftest kommt immer 0 raus! Was ist jetzt genau in SpectrumData2D enthalten? RGBA-Daten, 32 Bit Farbtiefe? In dem Fall würden SpectrumData2D[X, Y], SpectrumData2D[X+1, Y], SpectrumData2D[X+2, Y] und SpectrumData2D[X+3, Y] zusammen den RGAB-Wert des X-ten Pixels der Y-ten Zeile darstellen. Weiß jetzt nicht zu 100% wie die Reihenfolge der Farbwerte ist, aber der Alphawert steht entweder in SpectrumData2D[X, Y] oder SpectrumData2D[X+3, Y]. In dem Fall ist gar keine Bitschieberei notwendig. Falls meine Annahmen falsch sind, dann erklär bitte nochmal was für Daten genau vorliegen. |
AW: Farbwert zu Dezimal
Zitat:
unsigned - signend und Überläufe sind die Folge, hin und her Konvertierungen. Zitat:
Das Bitmap wird erstellt in 32Bit und ARGB (PixelFormat32bppARGB) deshalb kann man davon ausgehen das es 32Bit mit ARGB Daten sind. Wie habe ich anhand der Codeschnipsel der case ja schon gezeigt. Zitat:
ansonsten gibt es Überläufe. gruss |
AW: Farbwert zu Dezimal
Longword gibt's ja bei Delphi auch: Bei 4 Bytes (A,R,G,B) könntest du doch auch DWORD als Datentyp nutzen?
|
AW: Farbwert zu Dezimal
Zitat:
Delphi-Quellcode:
a + (Int64((c and $FF000000) div $1000000) And 255);
Daher glaube ich nicht das man hier DWORD nehmen kann. Oder? gruss |
AW: Farbwert zu Dezimal
Nö, das bleiben 32Bit Werte, wenn c ein 32Bit Wert ist.
32Bit and $FF000000 bleibt ein 32Bit Wert, c wird nur mit $FF000000 maskiert. Anschließend 24Bit nach rechts verschoben. Links von dem verschoben Wert stehen Nullen. Es ist aber weiterhin ein 32Bit Wert. mit and $FF wird er zu einem Byte. Grüße Klaus |
AW: Farbwert zu Dezimal
gibt doch mal
Zitat:
Definiere aber vorher c als Integer. Oder auf was wolltest du hinaus? In VB bei seiner Berechnung bekomme ich auch negative werte! Kann DWORD = Cardinal = ColorRef minus werte? Nein und genau das ist mein Problem hier wieder den richtigen DatenTyp zu finden der mit seinen Berechnungen übereinstimmt. Ist das gleiche wie mit dem FFT der mag unter VB seine Berechtigung haben ist aber unter Delphi so nicht anwendbar. Wie gesagt es gibt hier fast nur Long.. Deshalb möchte ich alle HEX werte auf normale Farbberechnung umlegen. Ich muss @Neutral General recht geben Byte ist definitiv der falsche DatenTyp. gruss |
AW: Farbwert zu Dezimal
Zitat:
Ausserdem
Delphi-Quellcode:
sollte das gleiche sein wie der obige Ausdruck. (hoffe ich hab mich bei den Bits nicht verzählt)
a+(c shr 6)
[ggf muß Du noch mit $FF maskieren] Gruß K-H |
AW: Farbwert zu Dezimal
Zitat:
[DCC Warning] uSpectrum.pas(843): W1024 Combining signed and unsigned types - widened both operands
Delphi-Quellcode:
a := a + (((c and $FF000000) div $1000000) And 255);
SpectrumData2D Array als DWord definiert a,r,g,b als DWord definiert. Auch wenn es nur Warnungen sind sie verfälschen das Endergebnis. Bei der Ausführung gibt es eine Range check error weil DWord nun mal keine negativen werte verträgt. Und besagten Integerüberlauf.
Delphi-Quellcode:
SpectrumData2D[X, Y] := c or ((a - 256) shl 24)
Obwohl schon geändert.. DWord ist also der falsche DatenTyp! gruss |
AW: Farbwert zu Dezimal
.. in VB6 ist long ein signed 32bit Datentyp.
Ab VB2005 ist long ein signed 64bit Datentyp. Grüße Klaus |
AW: Farbwert zu Dezimal
Zitat:
Es geht hier um die Berechnung von Farben von daher ist Byte falsch und ColorRef oder DWord wie man's nimmt richtig. Muss nur schauen warum der Compiler bei der Umlegung und dem Original so viele Fehler\Warnungen ausgibt. gruss |
AW: Farbwert zu Dezimal
Ich poste nochmal das Original..
Mir geht es darum die Hex werte mit einer Bit Verschiebung zu ersetzen.
Code:
Wenn hier jetzt Fehler sind dann sind sie nicht aus meinem Mist gewachsen
' Ïðîöåäóðà àíèìèðóåò ôîí
Private Sub Release() Dim x As Long, y As Long, c As Long, d As Long, w As Long, h As Long Dim r As Long, g As Long, b As Long, a As Long, dx As Long, dy As Long Dim cx As Single, cy As Single, Buf() As Long, o As Single, s As Single ' Îïðåäåëÿåì øèðèíó è âûñîòó ðèñóíêà - 1 h = UBound(imgSpectrumData, 2): w = UBound(imgSpectrumData, 1) '  çàâèñèìîñòè îò ýôôåêòà Select Case mEffect Case 0 ' ==========Áåç ýôôåêòà (ïðîñòî èçìåíÿåì ïðîçðà÷íîñòü ôîíà)========= ' Îïðåäåëÿåì êîýôôèöèåíò èçìåíåíèÿ àëüôà êîìïîíåíòû d = Fade * 255 ' Ïðîõîä ïî áèòàì ðèñóíêà For y = 0 To h: For x = 0 To w ' Ïîëó÷àåì àëüôó a = (((imgSpectrumData(x, y) And &HFF000000) \ &H1000000) And &HFF&) ' Óìåíüøàåì a = a - d ' Îãðàíè÷èâàåì If a < 0 Then a = 0 ' Âûäåëÿåì òîëüêî êîìïîíåíòû öâåòà c = imgSpectrumData(x, y) And &HFFFFFF ' Çàïèñûâàåì íàçàä ñ èçìåíåííîé àëüôîé If a > 127 Then imgSpectrumData(x, y) = c Or ((a - 256) * &H1000000) Else: imgSpectrumData(x, y) = c Or (a * &H1000000) End If Next: Next Case 1 ' ===========================Ðàçìûòèå================================ ' Îïðåäåëÿåì êîýôôèöèåíò èçìåíåíèÿ àëüôà êîìïîíåíòû d = Fade * 10 ' Ïðîõîä ïî áèòàì ðèñóíêà For y = 0 To h: For x = 0 To w ' Ðàçìûâàåì âíóòðè (1,1,w-1,h-1) If x > 0 And y > 0 And x < w - 1 And y < h - 1 Then ' Îáíóëÿåì çíà÷åíèÿ íàêîïëåíèÿ êîìïîíåíò r = 0: g = 0: b = 0: a = 0 ' Ïðîõîä ïî ñîñåäíèì ïèêñåëÿì For dy = -1 To 1: For dx = -1 To 1 ' Âûäåëÿåì êàæäóþ êîìïîíåíòó è çàïèñûâàåì â àêêóìóëÿòîðû c = imgSpectrumData(x + dx, y + dy) a = a + (((c And &HFF000000) \ &H1000000) And &HFF&) r = r + (c And &HFF0000) \ &H10000 g = g + (c And &HFF00&) \ &H100 b = b + (c And &HFF) Next: Next ' Óñðåäíÿåì çíà÷åíèÿ â àêêóìóëÿòîðàõ è óìåíüøàåì àëüôó r = r \ 9: g = g \ 9: b = b \ 9: a = a \ 9 - d ' Îãðàíè÷èâàåì àëüôó ñíèçó If a < 0 Then a = 0 ' Íàõîäèì çíà÷åíèÿ â RGB c = b Or (g * &H100&) Or (r * &H10000) ' Äîáàâëÿåì àëüôó If a > 127 Then imgSpectrumData(x, y) = c Or ((a - 256) * &H1000000) Else: imgSpectrumData(x, y) = c Or (a * &H1000000) End If ' Èíà÷å îáíóëÿåì (ïîëíîñòüþ ïðîçðà÷íûé) Else: imgSpectrumData(x, y) = 0 End If Next: Next Case 2 ' ============================Ãîðåíèå================================ ' Îïðåäåëÿåì êîýôôèöèåíò èçìåíåíèÿ àëüôà êîìïîíåíòû d = Fade * 64 ' Êîïèðóåì áèòû ðèñóíêà â áóôåð Buf = imgSpectrumData ' Âû÷èñëÿåì ñäâèãè è øèðèíó â çàâèñèìîñòè îò îòîáðàæåíèÿ If mSymmetrical Then o = 0: s = w * 2 Else o = 0.5: s = w ' Ïðîõîä ïî áèòàì ðèñóíêà For y = 0 To h: For x = 0 To w ' Òðàíñôîðìèðóåì êîîðäèíàòó â çàâèñèìîñòè îò öåíòðà cx = x / s - o: cy = y / h - 0.5 ' Íàõîäèì äëèíó îòíîñèòåëüíî öåíòðà r = Sqr(cx * cx + cy * cy) ' Íàõîäèì ðåçóëüòòèðóþùèé ïèêñåëü dx = (cx + o + 0.01 * cx * ((r - 1) / 0.5)) * s dy = (cy + 0.5 + 0.01 * cy * ((r - 1) / 0.5)) * h ' Íàõîäèì è óìåíüøàåì åãî àëüôó a = (((Buf(dx, dy) And &HFF000000) \ &H1000000) And &HFF&) - d ' Îãðàíè÷èâàåì àëüôó ñíèçó If a < 0 Then a = 0 ' Âûäåëÿåì òîëüêî êîìïîíåíòû öâåòà c = Buf(dx, dy) And &HFFFFFF ' Çàïèñûâàåì íàçàä ñ èçìåíåííîé àëüôîé If a > 127 Then imgSpectrumData(x, y) = c Or ((a - 256) * &H1000000) Else: imgSpectrumData(x, y) = c Or (a * &H1000000) End If Next: Next End Select End Sub destotrotz möchte ich das fertig machen damit die Effekte funktionieren und ich das TrickSpectrum Projekt abschließen kann. gruss |
AW: Farbwert zu Dezimal
In Delphi kannst du den ersten Teil so schreiben:
Delphi-Quellcode:
a,d: DWORD;
imgSpectrumData: Array of Array of DWORD; … ... a := imgSpectrumData[x, y] shr 24; // Alpha bestimmen if a >= d then a := a-d else a=0; // Alpha ändern c := imgSpectrumData[x,y] and $00ffffff; // nur RGB imgSpectrumData[x,y] := (a shl 24) or c; // Neues Alpha und RGB zurückschreiben |
AW: Farbwert zu Dezimal
Zitat:
gruss |
AW: Farbwert zu Dezimal
.. ein Versuch:
Delphi-Quellcode:
Grüße
var
imgSpectrum: Array[0..9,0..9] of Integer; h,w: Integer; x, dx ,y, dy: Integer; c,d,red,green,blue: Integer; alpha: Integer; fade: Integer; mEffect: Byte; begin try h := 9; w := 9; case mEffect of 0: begin d := fade * 255; for y:= 0 to h do for x := 0 to w do begin alpha := ((imgSpectrum[x,y] and $FF000000) shr 24) and $FF; alpha := alpha - d; if alpha < 0 then alpha := 0; c := imgSpectrum[x,y] and $FFFFFF; if alpha > 127 then imgSpectrum[x,y] := c or ((alpha -256) shl 24) else imgSpectrum[x,y] := c or (alpha shl 24); end; end; 1: begin d:= fade * 10; for y := 0 to h do for x := 0 to w do begin if (x > 0) and (y > 0) and (x < (w-1)) and (y < (h -1))then begin red := 0; green := 0; blue := 0; alpha := 0; for dy := -1 to 1 do for dx := -1 to 1 do begin c := imgSpectrum[x+dx,y+dy]; alpha := (((c and $FF000000) shr 24) and $FF) + cardinal(alpha); red := red + ((c and $FF0000) shr 16); green := green + (( c and $FF00) shr 8); blue := blue + (c and $FF); end; red := red div 9; green := green div 9; blue := blue div 9; alpha := (alpha div 9) - d if alpha < 0 then alpha := 0; c := blue or ( green shl 8) or (red shl 16); if alpha > 127 then imgSpectrum[x,y] := c or ((alpha -256) shl 24) else imgSpectrum[x,y] := c or (alpha shl 24); end; end; end; end; except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. Klaus |
AW: Farbwert zu Dezimal
Danke für deine Mühe es gibt einen AV direkt in der ersten zeile
Delphi-Quellcode:
alpha := ((imgSpectrum[y,y] and $FF000000) shr 24) and $FF;
gruss |
AW: Farbwert zu Dezimal
Zitat:
Grüße Klaus |
AW: Farbwert zu Dezimal
Zitat:
Aber nein funktioniert nicht komme niemals über 127 hinweg. PS: Danke für euer Interesse denke muss es aufgeben komme auf keinen grünen zweig. Man kann es drehen wie man will aber die Berechnung von VB lässt sich scheinbar auf Delphi auch in geänderter Form nicht umlegen. Er wendet da ein paar Tricks an die so einfach nicht nachvollziehbar sind. gruss |
AW: Farbwert zu Dezimal
Zitat:
Du solltest dich eventuell mal mit den Datentypen und binären Operationen auseinandersetzen, weil du nicht wirklich genau weißt was du da überhaupt tust. |
AW: Farbwert zu Dezimal
Zitat:
Nur seltsam das meine Projekte soweit alle laufen für jemand der keine Ahnung hat eine respektvolle Leistung. gruss |
AW: Farbwert zu Dezimal
Zitat:
Delphi-Quellcode:
Habe es oben ergänzt.
alpha := (alpha div 9) - d
Grüße Klaus |
AW: Farbwert zu Dezimal
Zitat:
Trotzdem danke.. Tut mir leid das ein Nichtskönner euch mit seinem Problem belästigt hat.. Entschuldigung. Es gibt immer wieder Leute die viel reden aber zum eigentlichen Thema nichts beitragen. Müssen sie auch nicht nur dann sollen sie sich bedeckt halten und die Sticheleien gefälligst unterlassen. Bin sauer! gruss |
AW: Farbwert zu Dezimal
Sauer sein macht Falten..
Setze doch mal eine Breakpoint auf
Delphi-Quellcode:
Markiere imgSpectrum[x,y], drücke ctrl+F5
alpha := ((imgSpectrum[x,y] and $FF000000) shr 24) and $FF;
das gleiche mache mit alpha. Editiere die beiden Watcheinträge, und lass sie als Hexwert ausgeben. Jetzt schau mal was in den imgSpectrum Array drin steht. .. und was aus alpha wird. Vielleicht ist es ein Problem Deiner Eingangsdaten.. Wenn ich meine Array mit Quatchwerten belege, dann wird auch ab und an alpha > 127 angefahren.
Delphi-Quellcode:
Grüße
for x := 0 to w do
for y := 0 to h do imgSpectrum[x,y] := (random(high(byte)) shl 24) or $00123456; Klaus |
AW: Farbwert zu Dezimal
Zitat:
Die Daten bzw.. Farben werden doch erst hier erzeugt. Es ist ein leeres Bitmap was erst beim Rendern mit Farbe gefüllt wird die Funktionen der Effekte addieren dann die zusätzlichen Farbwerte bzw. Manipulieren diese. siehe! Zitat:
PS: Nur über das Original Projekt kann man erkennen was abgeht. ;) gruss |
AW: Farbwert zu Dezimal
.. ich ging davon aus, das Daten im imgSpectrum vorhanden sind.
Wenn das Array leer ist, bzw mit 0en gefüllt, dann kann alpha nie > 127 sein. Oder vielleicht, doch das ist dann aber abhängig von "fade". Grüße Klaus |
AW: Farbwert zu Dezimal
Zitat:
Zitat:
Aber das ist schwierig weil das Rendern über eine Callback gesteuert wird unterbrichts du die wird es schwierig da was zu debuggen. gruss |
AW: Farbwert zu Dezimal
.. kannst Du nit die "fade" oder "d" Werte in eine Datei schreiben lassen?
Mit den Werten könnte man die Funktion dann testetn. Grüße Klaus |
AW: Farbwert zu Dezimal
Zitat:
Delphi-Quellcode:
d := round(Fade * 255);
Für das Case 0 also wenn kein Effekt ausgewählt ist. Fade ist ein wert zwischen 0 und 1 Default 0.81xxxx gruss |
AW: Farbwert zu Dezimal
.. aber wenn d einen wert größer als 0 hat
und alpha so berechnet wird ->
Delphi-Quellcode:
ist dann nicht alpha immer < 0?
alpha := ((imgSpectrum[x,y] and $FF000000) shr 24) and $FF;
alpha := alpha - d Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:04 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