گرد کردن عکس [B4X]

سلام به همه

همونطور که از عنوان پیداست، با کد زیر میتونید عکس ها رو گرد کنید. کتابخونه های بسیار زیادی برای اینکار رپ شده که تو همین سایت هم موجود هست. اما چون کد زیر، در B4A و هم در B4J و هم در B4i قابل استفاده هست، اینجا میذارمش.(بهمین خاطر عنوان تاپیک رو گذاشتم B4X)

نتیجه میشه یه چیزی مثل این:

 

SS-2017-10-17_12.59.56.png (311×311)

 

کد:

 

'xui is a global XUI variable.
Sub CreateRoundBitmap (Input As B4XBitmap, Size As Int) As B4XBitmap
   If Input.Width <> Input.Height Then
       'if the image is not square then we crop it to be a square.
       Dim l As Int = Min(Input.Width, Input.Height)
       Input = Input.Crop(Input.Width / 2 - l / 2, Input.Height / 2 - l / 2, l, l)
   End If
   Dim c As B4XCanvas
   Dim xview As B4XView = xui.CreatePanel("")
   xview.SetLayoutAnimated(0, 0, 0, Size, Size)
   c.Initialize(xview)
   Dim path As B4XPath
   path.InitializeOval(c.TargetRect)
   c.ClipPath(path)
   c.DrawBitmap(Input.Resize(Size, Size, False), c.TargetRect)
   c.RemoveClip
   c.DrawCircle(c.TargetRect.CenterX, c.TargetRect.CenterY, c.TargetRect.Width / 2 - 2dip, xui.Color_White, False, 5dip) 'comment this line to remove the border
   c.Invalidate
   Dim res As B4XBitmap = c.CreateBitmap
   c.Release
   Return res
End Sub

 

نحوه استفادش هم به این صورته که اول ساب بالا رو به اکتیویتی اضاف میکنید و هرجا که خواستین، کدهای زیر رو مینویسید:

 

 

Dim xui As XUI
Dim ImageView1 As B4XView

Dim img As B4XBitmap = xui.LoadBitmap(File.DirAssets, "myimage.jpg")
ImageView1.SetBitmap(CreateRoundBitmap(img, ImageView1.Width))

 

اگر نمیخواین که ImageView1 از نوع B4XView باشه، از کد زیر استفاده کنید:

 

 

Dim xui As XUI
Dim ImageView1 As ImageView
Dim img As B4XBitmap = xui.LoadBitmap(File.DirAssets, "myimage.jpg")

Dim xIV As B4XView = ImageView1
xIV.SetBitmap(CreateRoundBitmap(img, xIV .Width))

 

برای استفاده باید کتابخونه XUI رو فعال کنید و یه متغیر از اون رو به اسم xui در Globals تعریف کنید.

موفق باشید

 

دیدگاهتان را بنویسید