PDA

View Full Version : اضافه کردن متن و عکس به pictureBoxy که قبلا پر شده



choobin84
سه شنبه 13 فروردین 1387, 23:13 عصر
چطوری میشه ، متن و عکسی را به یک پیکچر باکس(picturebox) که قبلا در آن عکس دیگری وجود دارد، اضافه کرد.
دقت کنید(اضافه کرد) نه اینکه عکس جدید جایگزین عکس قبلی بشه.
ممنون

gdevnb
سه شنبه 13 فروردین 1387, 23:33 عصر
من از توابع GDI+ قبلاً این کار رو کرده بودم البته نه عکس بلکه یه متن بود که تو پیکچرباکس رسم میکردم بدون اینکه عکس اول تغییری کنه.

gdevnb
چهارشنبه 14 فروردین 1387, 04:50 صبح
***ویرایش شد (مدیر بخش)***
سلام جناب choobin84
امیدوارم با این برنامه مشکلتون حل بشه . ***ویرایش شد (مدیر بخش)***
:تشویق:

choobin84
چهارشنبه 14 فروردین 1387, 07:51 صبح
سلام جناب choobin84
امیدوارم با این برنامه مشکلتون حل بشه و از این به بعد اگه کسی قصد کمک به شما رو داشت مسخرش نکنید
:تشویق:
هیچ کسی رو مسخره نکردم.
جمله مورد نظر در بالا هیچ کمکی به هیچ کسی به غیر خودتون نمی کنه.
حالا مشکل اینه که g رو که از نوع graphic هست چطور در همون picBox قرار بدم تا بتونم اونو روی هارد ذخیره کنم؟

Mahdi.Kiani
چهارشنبه 14 فروردین 1387, 11:30 صبح
رویداد paint بهترین مکان برای رسم هست.




private void pictureBox1_Paint(object sender, PaintEventArgs e)
{

e.Graphics.DrawImage(Properties.Resources.Aqua_Wor d, new Point(2, 2));
e.Graphics.DrawImage(Properties.Resources.Aqua_Wor d, new Point(250, 2));
e.Graphics.DrawImage(Properties.Resources.Aqua_Wor d, new Point(500, 2));
e.Graphics.DrawString("برنامه نویس", this.Font, new SolidBrush(this.ForeColor), new PointF(750, 300), new StringFormat(StringFormatFlags.DirectionRightToLef t));

}


اما اگر مجبوری جایی غیر از رویداد paint روی pictrurebox نقاشی کنی، مثلا در رویداد کلیک یک دکمه ، کافیه که شی گرافیکی picturebox را بگیری




private void button1_Click(object sender, EventArgs e)
{
Graphics g = this.pictureBox1.CreateGraphics();
g.DrawImage(Properties.Resources.Aqua_Word, new Point(2, 2));
g.DrawImage(Properties.Resources.Aqua_Word, new Point(250,2));
g.DrawImage(Properties.Resources.Aqua_Word, new Point(500, 2));
g.DrawString("برنامه نویس",this.Font,new SolidBrush(this.ForeColor),new PointF(750,300),new StringFormat( StringFormatFlags.DirectionRightToLeft));
g.Dispose();
}




نکته : در حالت دوم، با هر تغییر کوچیکی در برنامه ( مثلا فرمی روی فرمت قرار بگیره و ...) تمام نقاشی هات پاک میشه . که الته میشه با تانظیم یک سری خواص اون مشکل را هم بر طرف کرد.. ولی کلا سعی کنید که برای رسم حتی المقدور در رویداد pint اون کنترل باشه ..

نمونه عکس زیر حاصل اجرای هر یک از دو کد بالاست ..
هر w در عکس زیر ، یک عکس جدا هست..
کلمه "برنامه نویس" نیز به صورت نقاشی شده هست ( با DrawString )
موفق باشید

choobin84
چهارشنبه 14 فروردین 1387, 12:36 عصر
کد زیر عکس های picBox1,picBox2 رو در هم ادغام می کنه. عکس موجود در picBox2 به picBox1 اضافه شد.


Graphics g = Graphics.FromImage(pictureBox1.Image);

g.DrawImage(pictureBox1.ControlImage, new Point(70, 190));
g.DrawString(label1.Text,label1.Font,Brushes.Black ,500,180);

g.Dispose();


pictureBox1.Image.Save("output.jpg", ImageFormat.Jpeg);


اینجا یک نمونه فایل هست که دو تا عکس رو در هم ادغام می کنه.
منبع:
http://www.codeproject.com/KB/cs/JoinImages.aspx

rezaei manesh
پنج شنبه 26 دی 1387, 13:16 عصر
با سلام
من مي خوام با قلم نوري يا ماوس روي يه پيکچر باکس بنويسم بايد از چه رويدادي استفاده کنم مثال اگه داريد بزاريد ممنون ميشم