سلام به همه
همونطور که از عنوان پیداست، با کد زیر میتونید عکس ها رو گرد کنید. کتابخونه های بسیار زیادی برای اینکار رپ شده که تو همین سایت هم موجود هست. اما چون کد زیر، در B4A و هم در B4J و هم در B4i قابل استفاده هست، اینجا میذارمش.(بهمین خاطر عنوان تاپیک رو گذاشتم B4X)
نتیجه میشه یه چیزی مثل این:
کد:
'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 تعریف کنید.
موفق باشید