PDA

View Full Version : نحوه تهیه عکس از RichTextBox



golestan1
سه شنبه 20 مهر 1395, 06:10 صبح
چرا کد زیر از کنترل هایی مانند تکست باکس ، پنل ، دکمه عکس تهیه می کند اما از ریچ باکس نمی تواند به درستی تهیه کند
می خوام فقط از ریچ باکس عکس تهیه کنم
int boundWidth = this.richTextBox1.Width;
int boundHeight = this.richTextBox1.Height;
int x = boundWidth - this.richTextBox1.Width;
int y = boundHeight - this.richTextBox1.Height;
Bitmap bt = new Bitmap(boundWidth, boundHeight);
this.richTextBox1.DrawToBitmap(bt, this.ClientRectangle);
pictureBox2.Image = bt;

ronix3
سه شنبه 20 مهر 1395, 09:00 صبح
اصولی نیست ولی من از کد زیر استفاده می کنم اگه border style فرمتون نرمال باشه کد زیر درست انجام می شه اگه none هست ۲ تا عدد ۸ و ۳۱ رو حذف کنید اگه هم از کتابخانه هایی واسه طراحی فرم استفاده می کنید این اعداد رو باید با تست به دست بیارید

Graphics Graphics1;
Bitmap Bitmap1 = new Bitmap(richTextBox1.Width,richTextBox1.Height);
Graphics1 = Graphics.FromImage(Bitmap1);
Graphics1.CopyFromScreen(new Point(this.Location.X+richTextBox1.Location.X+8, this.Location.Y + richTextBox1.Location.Y+31),Point.Empty, richTextBox1.Size);
pictureBox3.Image = Bitmap1;

golestan1
سه شنبه 20 مهر 1395, 18:57 عصر
ممنون دوست عزیز اما به قول خودت اصولی نیست
چون اگه اندازه ریچ خیلی بزرگ باشه نمی تونه از کل اندازه عکس بگیره

محمد آشتیانی
سه شنبه 20 مهر 1395, 20:22 عصر
سلام
این لینک راه حل مشکل شما رو ارائه کرده
https://social.msdn.microsoft.com/Forums/windows/en-US/1454d078-c312-4741-88df-aa7eb306fe51/how-to-save-the-content-of-richtextbox-as-jpg-file?forum=winforms


این متد رو بنویسید

public Bitmap RtbToBitmap(RichTextBox rtb)
{
rtb.Update();
Bitmap bmp = new Bitmap(rtb.Width, rtb.Height);
using (Graphics gr = Graphics.FromImage(bmp))
{
gr.CopyFromScreen(rtb.PointToScreen(Point.Empty), Point.Empty, rtb.Size);
}
return bmp;
}


موقع فراخوانی ، نام کنترل richTextBox رو بعنوان پارامتر ورودی بهش بدید
pictureBox2.Image = RtbToBitmap(richTextBox1);



موفق باشید.

golestan1
پنج شنبه 22 مهر 1395, 07:25 صبح
چون متن ریچ ثابت نیست من از رویدادContentsResized اندازه ریچ رو به نسبت متون داخلش به صورت خودکار کوچک و بزرگ می کنم
متاسفانه وقتی اندازه بزرگ باشد کد آقای آشتیانی به درستی کار نمی کند
ایا روشی هست که با تغییر اندازه ریچ و محو شدن قسمت های پایین ریچ در زیر کنترل های دیگر باز هم بتوانیم از کل ابعاد ریچ عکس تهیه کنیم