مقدمه
این مقاله به شما نشان می دهد که چگونه به صورت دینامیک متنی را بر روی عکسی که از قبل وجود داشته بنویسیم. این برنامه با استفاده از Asp.Net و C# نوشته شده است.
در این مثال من، یک عکس از پسرم دارم و متن "That's my boy" را روی آن می نویسم. همچنین برای نشان دادن اینکه می توان گرافیک و رسم و متن را با هم به کار ببریم، من سپس یک شکل بیضی را دور متن رسم کرده ام و آن را روی عکس قرار داده ام.
برای اینکه بتوانید این برنامه را بنویسید لازم است که رفرنس های زیر را به برنامه اضافه کنید:
|
using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Drawing2D; using System.Drawing.Text;
|
همچنین ممکن است شما بخواهید جای متن و بیضی را در روی عکستان تغییر دهید. به یاد داشته باشید که مکان متن و شکل بیضی هر دو بر روی مختصات X و Y بنا نهاده شده اند. بنابراین، اگر بخواهید متن و یا بیضی را به سمت بالا حرکت دهید، باید مقدار پارامتر Y را تغییر دهید. و اگر بخواهید متن و بیضی را به صورت افقی حرکت دهید، باید مقدار پارامتر X را تغییر دهید.
به طور اساسی 6 مرحله برای این مثال وجود دارد:
1- بارگذاری عکس:
|
//Load the Image to be written on. Bitmap bitMapImage = new System.Drawing.Bitmap(Server.MapPath("dallen.jpg" ) ); Graphics graphicImage = Graphics.FromImage( bitMapImage );
|
2- ست کردن شیء graphics تا به صورت هموار (smooth)در آید:
|
//Smooth graphics is nice. graphicImage.SmoothingMode = SmoothingMode.AntiAlias;
|
3- نوشتن متن. اینجا جایی است که باید فونت خود را ست کنید. مختصات X و Y در نقطه ی جدیدی هستند.(100=X , 250=Y)
|
//Write your text. graphicImage.DrawString( "That's my boy!", new Font("Arial", 12,FontStyle.Bold ), SystemBrushes.WindowText, new Point( 100, 250 ) );
|
4- رسم کردن بیضی اطراف متن. نکته: برای ساختن اندازه ی دلخواه برای بیضی خود با اعداد بازی کنید.
|
//I am drawing a oval around my text. graphicImage.DrawArc(new Pen(Color.Red, 3), 90, 235, 150, 50, 0, 360);
|
5- ست کردن خصوصیت Content Type به jpg و سپس نوشتن عکس در response stream
|
//Set the content type Response.ContentType="image/jpeg"; //Save the new image to the response output stream. bitMapImage.Save(Response.OutputStream, ImageFormat.Jpeg);
|
6- پاک کردن حافظه
|
//Clean house. graphicImage.Dispose(); bitMapImage.Dispose();
|