| Global Canvas2:TGadget '---------Canvas2 is our zoomed window |
| Function CreateCanvases() '---------Canvas1 is our Main Canvas Canvas1:TGadget=CreateCanvas(0,0,480,400,MyWindow) '---------Canvas2 is our zoomed window****2 Canvas2:Tgadget=CreateCanvas(GadgetWidth(Canvas1)+22,0,48*6,48*6,MyWindow) End Function |
| Function DrawPixUnderCursor:Int(Canvas:TGadget,PixMap:TPixMap,x:Int,y:Int) Local rgb:Int Local r:Int, g:Int,b:Int, a:Int Local resize:Float=Float(GadgetWidth(canvas)/xsize) If resize>Float(GadgetHeight(canvas)/ysize) Then resize=Float(GadgetHeight(canvas)/ysize) Local MaxX:Int=xsize Local MaxY:Int=ysize If PixmapWidth(PixMap)<MaxX MaxX=PixmapWidth(Pixmap) If PixmapHeight(PixMap)<MaxY MaxY=PixmapHeight(Pixmap) Cls For Local i:Int=0 To MaxX-1 For Local j:Int=0 To MaxY-1 If (i+x)<PixmapWidth(PixMap) And (j+y)<PixmapHeight(PixMap) rgb = ReadPixel(PixMap,i+x,j+y) getRGB(rgb,a,r,g,b) SetColor r,g,b DrawRect (Float(i*resize),Float(j*resize),Float(resize),Float(resize)) EndIf Next Next End Function |
| Local resize:Float=Float(GadgetWidth(canvas)/xsize) If resize>Float(GadgetHeight(canvas)/ysize) Then resize=Float(GadgetHeight(canvas)/ysize) |
| Local MaxX:Int=xsize Local MaxY:Int=ysize If PixmapWidth(PixMap)<MaxX MaxX=PixmapWidth(Pixmap) If PixmapHeight(PixMap)<MaxY MaxY=PixmapHeight(Pixmap) |
| rgb = ReadPixel(PixMap,i+x,j+y) getRGB(rgb,a,r,g,b) SetColor r,g,b DrawRect (Float(i*resize), Float(j*resize), Float(resize), Float(resize)) |
| Function GetRGB:Int(argb:Int,a:Int Var,r:Int Var, g:Int Var, b:Int Var) a=(argb Shr 24) & $ff r=(argb Shr 16) & $ff g=(argb Shr 8) & $ff b=argb & $ff End Function |
| Function Process_GadgetPaintEvent:Int() Select EventSource() Case Canvas1 SetGraphics CanvasGraphics (Canvas1) Cls DrawPixmap Pix,0,0 If MouseInCanvas1 Then DrawCursor(mx1,my1,xsize, ysize) RedrawGadget(Canvas2) EndIf Flip Case Canvas2 SetGraphics CanvasGraphics(Canvas2) Cls If MouseInCanvas1=True Then DrawPixUnderCursor(Canvas2,Pix,mx1,my1) EndIf Flip End Select 'EventSource() End Function |
![]() |