'Code module
#Region Project Attributes
#ApplicationLabel: B4i Example
#Version: 1.0.0
'Orientation possible values: Portrait, LandscapeLeft, LandscapeRight and PortraitUpsideDown
#iPhoneOrientations: Portrait, LandscapeLeft, LandscapeRight
#iPadOrientations: Portrait, LandscapeLeft, LandscapeRight, PortraitUpsideDown
#Target: iPhone, iPad
#ATSEnabled: True
#MinVersion: 8
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'Public variables can be accessed from all modules.
Public App As Application
Public NavControl As NavigationController
Private Page1 As Page
Private CropPicture As Button
Private ImageView1 As ImageView
Private ImageView2 As ImageView
End Sub
Private Sub Application_Start (Nav As NavigationController)
NavControl = Nav
Page1.Initialize("Page1")
Page1.RootPanel.LoadLayout("Page1")
NavControl.ShowPage(Page1)
Dim temp_bmp As Bitmap = LoadBitmap(File.DirAssets,"boxes.png")
ImageView1.Bitmap = temp_bmp
End Sub
Private Sub Page1_Resize(Width As Int, Height As Int)
End Sub
Sub CropPicture_Click
Log("Attempting To Crop Picture ")
Dim canvas1 As Canvas
Dim b4xv As B4XView = ImageView1
canvas1.Initialize(ImageView2)
Dim SRCRect As Rect
SRCRect.Initialize(60, 30, ImageView1.Width-60, ImageView1.Height-30)
Dim DSTRect As Rect
DSTRect.Initialize(0,0,ImageView2.Width,ImageView2.Height)
DrawBitmap(canvas1, b4xv.Snapshot, SRCRect, DSTRect)
End Sub
Sub DrawBitmap(canvas1 As Canvas, Bitmap1 As Bitmap, SrcRect As Rect, DestRect As Rect)
If SrcRect = Null Then
Dim SrcRect As Rect
SrcRect.Initialize(0, 0, Bitmap1.Width, Bitmap1.Height)
End If
Dim p1 As Path
p1.InitializeRect(DestRect, 0)
canvas1.ClipPath(p1)
Dim sx, sy As Float
sx = (DestRect.Right - DestRect.Left) / (SrcRect.Right - SrcRect.Left)
sy = (DestRect.Bottom - DestRect.Top) / (SrcRect.Bottom - SrcRect.Top)
Dim x, y, width, height As Int
x = DestRect.Left - sx * SrcRect.Left
y = DestRect.Top - sy * SrcRect.Top
width = Bitmap1.Width * sx
height = Bitmap1.Height * sy
Dim d2 As Rect
d2.Initialize(x, y, x + width, y + height)
canvas1.DrawBitmap(Bitmap1, d2)
canvas1.RemoveClip
canvas1.Refresh
Log("End of DrawBitmap, Path Clip Removed, Canvas Refreshed")
End Sub