Oh dear...Have you even tried your own code?...
Strict
Graphics 800, 600, 32
Local img:TImage = LoadImage("bmlogo.png", 0)' A 257x257 image
SetClsColor 0, 0, 200
Cls
DrawImage img, 0, 12
DrawImageAreaMe img, 260, 12, 0, 0, 128, 128
DrawImageAreaDream img, 520, 12, 128, 128, 0, 0, 128, 128
DrawText "Full", 12, 0
DrawText "My Quarter", 270, 0
DrawText "Dreamora's Quarter", 520, 0
Flip
WaitKey()
End
Function DrawImageAreaMe(image:TImage, x#, y#, rx#, ry#, rw#, rh#, frame:Int=0)
Local origin_x#, origin_y# ; GetOrigin (origin_x, origin_y)
Local tw = Pow2Size(image.width)
Local th = Pow2Size(image.height)
Local rw1# = rx + rw
Local rh1# = ry + rh
Local x0# = -image.handle_x, x1# = x0 + rw
Local y0# = -image.handle_y, y1# = y0 + rh
If rw1 > image.width
x1 = x0 + rw + image.width - rw1
rw1 = image.width
EndIf
If rh1 > image.height
y1 = y0 + rh + image.height - rh1
rh1 = image.height
EndIf
?Win32
If TD3D7ImageFrame(image.frame(frame))
Local frame:TD3D7ImageFrame = TD3D7ImageFrame(image.frame(frame))
frame.setUV(rx / tw, ry / th, rw1 / tw, rh1 / th)
frame.Draw x0, y0, x1, y1, x + origin_x, y + origin_y
frame.setUV(0, 0, image.width / Float(tw), image.height / Float(th))
Else
?
Local frame:TGLImageFrame = TGLImageFrame (image.frame(frame))
frame.u0 = rx / tw
frame.v0 = ry / th
frame.u1 = rw1 / tw
frame.v1 = rh1 / th
frame.Draw x0, y0, x1, y1, x + origin_x, y + origin_y
frame.u0 = 0
frame.v0 = 0
frame.u1 = image.width / Float(tw)
frame.v1 = image.height / Float(th)
?Win32
EndIf
?
Function Pow2Size(n)
Local ry = 1
While ry < n
ry :* 2
Wend
Return ry
End Function
End Function
Function DrawImageAreaDream(image:TImage, x#, y#, dw#, dh#, l#, t#, w#, h#, frame:Int=0)
Local origin_x#,origin_y#
GetOrigin (origin_x,origin_y)
Local l1# = l + w
Local h1# = t + h
Local x0#=-image.handle_x,x1#=x0+w
Local y0#=-image.handle_y,y1#=y0+h
If l1 > image.width
x1 = x0 + w + image.width - l1
l1 = image.width
EndIf
If h1 > image.height
y1 = y0 + h + image.height - h1
h1 = image.height
EndIf
If TGLImageFrame (image.frame(frame))
Local frame:TGLImageFrame = TGLImageFrame (image.frame(frame))
frame.u0 = l / image.width
frame.v0 = t / image.height
frame.u1 = (l1) / image.width
frame.v1 = (h1) / image.height
frame.Draw x0,y0,x0+dw,y0+dh,x+origin_x,y+origin_y
frame.u0 = 0
frame.v0 = 0
frame.u1 = 1
frame.v1 = 1
Else
Local frame:TD3D7ImageFrame = TD3D7ImageFrame(image.frame(frame))
frame.setUV (l/image.width, t/image.height, (l1) / image.width, (h1) / image.height)
frame.Draw x0,y0,x0+dw,y0+dh,x+origin_x,y+origin_y
frame.setUV (0,0,1,1)
EndIf
End FunctionUsing
this image, I get
this.