ByteArray, die 2.
Verfasst: 10.05.2005 22:09
N´abend @ alle.
Ich habe ein RGB-Speicherbereich (pBuffer), wo jeweils 3 aufeinanderfolgende Bytes jeweils die Farbe für einen Pixel darstellen.
Also ein Byte weniger als im RGBQUAD.
Bisher funktioniert folgender Code:
dieser ist aber aufgrund des PLOT recht langsam.
Nun habe ich es so versucht:
Der untere Code liefert mir ein Bild, wo die Farbinformationen fehlerhaft sind und die Bildzeilen sind nicht wirklich untereinander - sie laufen "schräg".
Ich weis, das das Bild mit der untern Funktion auf dem Kopf steht - das ist allerdings egal und wird von mir an einer anderen Stelle behoben.
Zudem sollte der Stretchblt im unteren Code das so frisch erzeugte Bild verkleinert darstellen, was auch nicht wirklich funktioniert.
Wo habe ich da Mist gebaut?
Frank
Ich habe ein RGB-Speicherbereich (pBuffer), wo jeweils 3 aufeinanderfolgende Bytes jeweils die Farbe für einen Pixel darstellen.
Also ein Byte weniger als im RGBQUAD.
Bisher funktioniert folgender Code:
Code: Alles auswählen
bmpx.l=400
bmpy.l=200
dwBufferSize.l=bmpx*bmpy
pBuffer.l=AllocateMemory(dwBufferSize*3)
hBMP.l=CreateImage(0, bmpx, bmpy)
dcv=StartDrawing(ImageOutput())
For y = 0 To bmpy-1
t1.l=y*bmpx
For x = 0 To bmpx-1
t2.l=pBuffer+t1+x*3
Plot(x, y, (PeekB(t2)&$FF) + (PeekB(t2+1)&$FF)<<8 + (PeekB(t2+2)&$FF)<<16)
Next
Next
StopDrawing()Nun habe ich es so versucht:
Code: Alles auswählen
Structure _RGB
r.b
g.b
b.b
EndStructure
Structure THEBITMAPINFO
bmiHeader.BITMAPINFOHEADER
bmiColors._RGB ;.RGBQUAD[1]
EndStructure
bmpx.l=400
bmpy.l=200
dwBufferSize.l=bmpx*bmpy
pBuffer.l=AllocateMemory(dwBufferSize*3)
hBMP.l=CreateImage(0, bmpx, bmpy)
dcv=StartDrawing(ImageOutput())
bmi.THEBITMAPINFO
bmi\bmiHeader\biSize=SizeOf(BITMAPINFOHEADER)
bmi\bmiHeader\biWidth=bmpx
bmi\bmiHeader\biHeight=bmpy
bmi\bmiHeader\biPlanes=1
bmi\bmiHeader\biBitCount=24
SetDIBits_(dcv,hBMP,0,bmpy,pBuffer,bmi, 0) ; rgbcolors=0 palcolors=1
;StretchBlt_(dcv,0,0,ImageInfo\dwPixel,ImageInfo\dwLine,dcv,0,0,200,100,#SRCCOPY)
StopDrawing()Ich weis, das das Bild mit der untern Funktion auf dem Kopf steht - das ist allerdings egal und wird von mir an einer anderen Stelle behoben.
Zudem sollte der Stretchblt im unteren Code das so frisch erzeugte Bild verkleinert darstellen, was auch nicht wirklich funktioniert.
Wo habe ich da Mist gebaut?
Frank