Verfasst: 07.11.2004 16:03
Man dafs ihm auch nicht übel nehmen !
Schließlich hat er pB geproggt !
Also ich wöllte und könnte sowas nicht schaffen !
Schließlich hat er pB geproggt !
Also ich wöllte und könnte sowas nicht schaffen !
Das deutsche PureBasic-Forum
https://www.purebasic.fr/german/
Wo ist denn da jetzt der Zusammenhang? Dann dürfte man sich ja überhaupt nicht über Bugs beschweren.Man dafs ihm auch nicht übel nehmen !
Schließlich hat er pB geproggt !
Wer meckert hier rum?? In Danilos post steht doch nix davon, dass irgendjemand Fred irgendetwas übel nimmt.Doch, aber man soll nicht rummäckern !
vergessen wir das einfach
Code: Alles auswählen
;Putpixel - plots a translucid pixel
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;Ich weiss nicht genau, wie PutPixel
;in höheren Farbtiefen läuft, müsste
;aber im Prinzip relativ fehlerfrei
;laufen. Benutzung auf eigene Gefahr ;]
;
;best viewed in jaPBe
Structure LONG_WORD
StructureUnion
l.l
w.w
EndStructureUnion
EndStructure
Global DrawingBuffer, DrawingBufferPitch, DrawingBufferPixelFormat
Declare PutPixel(x,y, c, t)
#ScreenWidth=640
#ScreenHeight=480
Dim rect(20,4)
For z=1 To 20
rect(z,0)=Random(#ScreenWidth-50)
rect(z,1)=Random(#ScreenHeight-50)
rect(z,2)=Random(100)+155
rect(z,3)=Random(100)+155
rect(z,4)=Random(100)+155
Next
Global MX,MY,z
InitSprite()
OpenWindow(0,0,0,700,500,#PB_Window_SystemMenu,"Test")
OpenWindowedScreen(WindowID(),0,0,640,480, #False,0,0)
InitMouse()
Repeat
ExamineMouse()
ClearScreen(255,255,255)
StartDrawing(ScreenOutput())
DrawingMode(0)
For z=1 To 20
Box(rect(z,0),rect(z,1), 50,50, RGB(rect(z,2),rect(z,3),rect(z,4)))
Next
MX=MouseX()
MY=MouseY()
DrawingMode(4)
Box(MX-1,MY-1, 42,42, 0)
DrawingBuffer = DrawingBuffer():DrawingBufferPitch = DrawingBufferPitch():DrawingBufferPixelFormat = DrawingBufferPixelFormat()
For zx=0 To 39
For zy=0 To 39
DrawText( Str(MX)+" "+Str(MY)+"|")
PutPixel(MX+zx,MY+zy, 100|255<<8|155<<16, 50)
;Plot(mx+zx,my+zy,$7F7F7F)
Next
Next
StopDrawing()
FlipBuffers()
Until MouseButton(1)
Procedure PutPixel(x,y, c, t)
Protected *DBP.LONG_WORD
If DrawingBufferPixelFormat >= #PB_PixelFormat_32Bits_RGB
*DBP = DrawingBuffer+x*4+y*DrawingBufferPitch
If *DBP >= DrawingBuffer And *DBP < DrawingBuffer+#ScreenHeight*DrawingBufferPitch
*DBP\l = MixColors(c,*DBP\l,t,100-t)
EndIf
ElseIf DrawingBufferPixelFormat >= #PB_PixelFormat_24Bits_RGB
*DBP = DrawingBuffer+x*3+y*DrawingBufferPitch
If *DBP >= DrawingBuffer And *DBP < DrawingBuffer+#ScreenHeight*DrawingBufferPitch
*DBP\l = MixColors(c,*DBP\l,t,100-t)|*DBP\l&$FF000000
EndIf
ElseIf DrawingBufferPixelFormat >= #PB_PixelFormat_16Bits
If x >= 0 And y >= 0 And x < #ScreenWidth And y < #ScreenHeight
Plot(x,y,MixColors(c,Point(x,y),t,100-t))
EndIf
EndIf
EndProcedure
Du könntest ja 4 Versionen davon machen, schliesslich willstDeeem2031 hat geschrieben:Ich benutze allerdings meine MixColors()-Proc weil die einfach viel schneller ist, nur für 16-bit ist die nicht zu gebrauchen:
Ist so nicht richtig, ich hab nämlich ein ">= #PB_PixelFormat_32Bits_RGB" drin und kein "=", desswegen werden auch die BGR_Werte gemischt.Danilo hat geschrieben:OK, Deeem und Nic. War etwas verwirrt, weil Deeem nur
#PB_PixelFormat_32Bits_RGB und #PB_PixelFormat_24Bits_RGB
in seinem Code hatte.
Bei den 2 BGR-Formaten macht diese PutPixel-Routine nichts,
da diese einfach ausgelassen wurden.