آموزش ایجاد عکس گرد در سی شارپ
سلام توسعه دهندگان عزیز در این سری از آموزش برنامه نویسی سی شارپ به آموزش ایجاد عکس گرد در سی شارپ می پردازیم برای اینکه عکس گرد در سی شارپ ایجاد کنید شئی خاصی وجود ندارد ولی با استفاده از یکسری کد منطقی می توان به سادگی عکس گرد ایحاد کرد در ادامه با ما همراه باشید تا نحوه استفاده از آموزش ایجاد عکس گرد در سی شارپ را یاد گیرید.
متد زیر را بررسی کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | using System.Drawing; using System.Drawing.Drawing2D; public Image RoundCorners(Image StartImage, int CornerRadius, Color BackgroundColor) { CornerRadius *= 2; Bitmap RoundedImage = new Bitmap(StartImage.Width, StartImage.Height); using(Graphics g = Graphics.FromImage(RoundedImage)) { g.Clear(BackgroundColor); g.SmoothingMode = SmoothingMode.AntiAlias; Brush brush = new TextureBrush(StartImage); GraphicsPath gp = new GraphicsPath(); gp.AddArc(0, 0, CornerRadius, CornerRadius, 180, 90); gp.AddArc(0 + RoundedImage.Width - CornerRadius, 0, CornerRadius, CornerRadius, 270, 90); gp.AddArc(0 + RoundedImage.Width - CornerRadius, 0 + RoundedImage.Height - CornerRadius, CornerRadius, CornerRadius, 0, 90); gp.AddArc(0, 0 + RoundedImage.Height - CornerRadius, CornerRadius, CornerRadius, 90, 90); g.FillPath(brush, gp); return RoundedImage; } } Image StartImage = Image.FromFile("YourImageFile.jpg"); Image RoundedImage = this.RoundCorners(StartImage, 25, Color.White); //Use RoundedImage... |
متد بالا سه ورودی دارد که ورودی اول آن آدرس فایل است ورودی دوم میزان گردی عکس است که شما می توانید مثلا 15 وارد کنید ورودی سوم رنگ Background را تعیین می کند در نهایت به شما یک خروجی Image میدهید که می توانید در PicutureBox آن را نمایش دهید.
اکر بخواهید رنگ پشت آن به صورت Transparent استفاده کنید می توانید از متد زیر که تغییر کرده متد بالا است استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | private Image RoundCorners(Image image, int cornerRadius) { cornerRadius *= 2; Bitmap roundedImage = new Bitmap(image.Width, image.Height); GraphicsPath gp = new GraphicsPath(); gp.AddArc(0, 0, cornerRadius, cornerRadius, 180, 90); gp.AddArc(0 + roundedImage.Width - cornerRadius, 0, cornerRadius, cornerRadius, 270, 90); gp.AddArc(0 + roundedImage.Width - cornerRadius, 0 + roundedImage.Height - cornerRadius, cornerRadius, cornerRadius, 0, 90); gp.AddArc(0, 0 + roundedImage.Height - cornerRadius, cornerRadius, cornerRadius, 90, 90); using (Graphics g = Graphics.FromImage(roundedImage)) { g.SmoothingMode = SmoothingMode.HighQuality; g.SetClip(gp); g.DrawImage(image, Point.Empty); } return roundedImage; } |
در واقع کد بالا تنها تفاوتش در رنگ آن است که همیشه به صورت Transparent یا بدون رنگ خواهد بود.
اگر بخواهید عکس را بیضی کنید می توانید از کد زیر استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 | public static Image OvalImage(Image img) { Bitmap bmp = new Bitmap(img.Width, img.Height); using (GraphicsPath gp = new GraphicsPath()) { gp.AddEllipse(0, 0, img.Width, img.Height); using (Graphics gr = Graphics.FromImage(bmp)) { gr.SetClip(gp); gr.DrawImage(img, Point.Empty); } } return bmp; } |
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
سلام من از این تابع شماره دوم شما استفاده کردم ولی من فقط میخوام گوشه های سمت چپ بالا و سمت چپ پایین گرد بشن و سمت راست گرد نشن چطوری باید تابع شما رو تغییر بدم ؟
ممنون میشم جواب بدین