Also bei mir klappts (PB4.10-Beta2, Intel, WinXP).Fluid Byte hat geschrieben:Kannste machen was de willst. Die Linie ist immer 1 Pixel zu weit rechts. Wie kann ich das beheben?
Wenn ich bei Deinem Ursprungscode #WIDTH = 351 und #HEIGHT = 351 setze (that's it - nothing else) sitzt alles perfekt.

Code: Alles auswählen
#WIDTH = 351 : #HEIGHT = 351 : #WSPACE = 40
CreateImage(0,#WIDTH + (#WSPACE * 2),#HEIGHT + (#WSPACE * 2))
OpenWindow(0,0,0,#WIDTH + (#WSPACE * 2),#HEIGHT + (#WSPACE * 2),"void",#WS_OVERLAPPEDWINDOW | 1)
CreateGadgetList(WindowID(0))
ImageGadget(0,0,0,0,0,ImageID(0))
SetWindowColor(0,0)
SetTimer_(WindowID(0),0,20,0)
#Linelength = 100
Procedure WindowCallback(hWnd,uMsg,wParam,lParam)
Static Angle = 45
Select uMsg
Case #WM_TIMER
Angle + 1
StartDrawing(ImageOutput(0))
Box(0,0,#WIDTH + (#WSPACE * 2),#HEIGHT + (#WSPACE * 2))
Circle((#WIDTH / 2) + #WSPACE,(#HEIGHT / 2) + #WSPACE,11,#Red)
DrawingMode(4)
Circle((#WIDTH / 2) + #WSPACE,(#HEIGHT / 2) + #WSPACE,#WIDTH / 2,#HEIGHT / 2)
DrawingMode(0)
X1.f = Cos((Angle - 45) * #PI/180) * #WIDTH/2
Y1.f = Sin((Angle - 45) * #PI/180) * #HEIGHT/2
X2.f = Cos((Angle + 45) * #PI/180) * 100
Y2.f = Sin((Angle + 45) * #PI/180) * 100
FX.f = X1 + (#WIDTH / 2) + #WSPACE
FY.f = Y1 + (#HEIGHT / 2) + #WSPACE
LineXY(FX-X2-1,FY-Y2-1,FX + X2-1,FY + Y2-1,#Green)
StopDrawing()
SetGadgetState(0,ImageID(0))
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
SetWindowCallback(@WindowCallback())
While WaitWindowEvent() ! 16 : Wend