Und nochmal:
Delphi-Quellcode:
// :
Buf[dx, dy] and 4278190080
Das ergibt IMMER 0
Sicher das du das willst?
Ich versteh was du meinst.
Der Original source..
Wo es geht muss ich mich daran halten von den Datentypen mal abgesehen.
DatenTyp dafür ist Buf() As Long
Code:
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
End If
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
Und ja ich habe das Problem das ich nicht über 0 hinwegkomme.
Ich erstelle ein leeres Image
Delphi-Quellcode:
if GDIP_CreateBitmapFromScan0(w, rc.Bottom, w * 4, PixelFormat32bppARGB,
PByte(imgSpectrumData[0, 0]), imgSpectrum) <> OK
then
begin
MessageBox(0, '
Error create GDI+ bitmap',
nil, 0);
SendMessage(MainHandle, WM_DESTROY, 0, 0);
exit;
end;
imgSpectrumData ist als Byte definiert.. genauso wie das Array für den Buf.
Da ich aber einen Pointer übergeben muss caste ich das Byte zu PByte könnte auch Pointer nehmen.
Das imgSpectrumData ist leer und wird seltsamerweise auch nicht gefüllt das verursacht meine ganzen Probleme.
&HFF& sieht seltsam aus ist aber in DEZ 255 und in VB als Long definiert deshalb der Anhang hinter &HFF
&
gruss