Kann man irgendwie die Kantenglättung ausschalten bei deinem Code? Ich bekomme beim Zoomen so immer schwarze Ränder.
Danke

remi
Code: Alles auswählen
Procedure ResizeSpriteWithoutAA(Sprite,Width,Height);Gibt bei Fehler 0 zurück.
If Width<=0 Or Height<=0:ProcedureReturn 0:EndIf
*Sprite.PB_Sprite=IsSprite(Sprite)
If *Sprite=0:ProcedureReturn 0:EndIf
*DDS.IDirectDrawSurface7=*Sprite\Sprite
If *DDS=0:ProcedureReturn 0:EndIf
*DDS\GetDDInterface(@*DD.IDirectDraw7)
If *DD=0:ProcedureReturn 0:EndIf
DDSD=AllocateMemory(124)
If DDSD=0:ProcedureReturn 0:EndIf
PokeL(DDSD,124)
If *DDS\GetSurfaceDesc(DDSD):FreeMemory(DDSD):ProcedureReturn 0:EndIf
PokeL(DDSD+8,Height)
PokeL(DDSD+12,Width)
If *DD\CreateSurface(DDSD,@*DDS2.IDirectDrawSurface7,0):FreeMemory(DDSD):ProcedureReturn 0:EndIf
*DDS\GetDC(@DC)
*DDS2\GetDC(@DC2)
SetStretchBltMode_(DC2,#COLORONCOLOR)
StretchBlt_(DC2,0,0,Width,Height,DC,0,0,SpriteWidth(Sprite),SpriteHeight(Sprite),#SRCCOPY)
*DDS\ReleaseDC(DC)
*DDS2\ReleaseDC(DC2)
FreeMemory(DDSD)
*DDS\Release()
*Sprite\Sprite=*DDS2
*Sprite\Width=Width
*Sprite\Height=Height
*Sprite\RealWidth=Width
*Sprite\RealHeight=Height
*Sprite\ClipX=0
*Sprite\ClipY=0
ProcedureReturn *DDS2
EndProcedure
Code: Alles auswählen
UseJPEGImageDecoder()
InitKeyboard()
InitSprite()
image.l = LoadImage(#PB_Any, "background.jpg")
OpenScreen(1024, 768, 32, "testImageResizeToSprite")
w.l = 700
h.l = 200
sprite.l = CreateSprite(#PB_Any, w, h)
ResizeImage(image, w, h)
StartDrawing(SpriteOutput(sprite))
DrawImage(ImageID(image), 0, 0)
StopDrawing()
Repeat
ClearScreen(RGB(0, 0, 0))
DisplaySprite(sprite, 0, 0)
FlipBuffers()
ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape)
CloseScreen()
End