PDA

View Full Version : سوال: تبدیل Graphic به Bitmap



Diaco.10727
پنج شنبه 25 آذر 1389, 14:39 عصر
سلام،
می خواستم بدونم چطور می شه یک System.Drawing.Graphic به System.Drawing.Bitmap تبدیل کرد ؟
با تشکر از همه شما دوستان

mehdi.mousavi
پنج شنبه 25 آذر 1389, 15:38 عصر
سلام، می خواستم بدونم چطور می شه یک System.Drawing.Graphic به System.Drawing.Bitmap تبدیل کرد ؟ با تشکر از همه شما دوستان

سلام.
به این شکل عمل کنید:


Bitmap bitmap = new Bitmap(1024, 768, gfx);که دو پارامتر اول در اون طول و عرض تصویر، و پارامتر سوم، Graphics Object ای هستش که می خواهید تبدیلش کنید. دقت کنید، چون Bitmap از کلاس Image مشتق شده، میتونید براحتی bitmap دریافتی رو به Image مورد نظر Cast کنید و بدین ترتیب از Graphics به Image برسید.

موفق باشید.

Diaco.10727
پنج شنبه 25 آذر 1389, 17:01 عصر
ممنون، ولی با این کد یه Bitmap خالی ایجاد می شه در حالی که من تصویر Graphic رو هم می خوام.

alirat
پنج شنبه 25 آذر 1389, 17:16 عصر
Graphics f;
f=Graphics.FromImage( Bitmap.FromFile(adresse axet));
Bitmap b=new Bitmap(int w,int h,f)




این رو استفاده کن

Diaco.10727
پنج شنبه 25 آذر 1389, 17:52 عصر
مرسی، ولی این هم مثل کد قبلی جواب نمیده و فقط به من یه Bitmap خالی میده !

alirat
پنج شنبه 25 آذر 1389, 19:04 عصر
Graphics f;
f=Graphics.FromImage(Image.FromFile(آدرس))
Bitmap b=new Bitmap(int w,int h,f)




عکست سالمه؟

Diaco.10727
پنج شنبه 25 آذر 1389, 21:24 عصر
بله. شما خودت این کد رو چک کردی !؟

sonixax
پنج شنبه 25 آذر 1389, 22:29 عصر
Bitmap bitmap = new Bitmap(1024, 768, gfx);

اون بیتمپ اول که قرمز کردم ، متغیر هستش ؟ اگر پاسخ + هست چند مدل متغیر توی C# داریم ؟

Diaco.10727
پنج شنبه 25 آذر 1389, 23:08 عصر
متوجه منظور شما نشدم. جواب من اینا نیست، حالا هی همتون بیان این یه خط کد و بنویسید! لااقل یه تست بزنید ببینید جواب نمیده.
من می خوام :

Graphic a = everyThing.CreateGraphic() -----> Bitmap

everything = هر چیزی که بشه ازش شیء Graphic رو گرفت.

به قول خاله قضی yesterday!
تو رو خدا همینجوری یه کد ننویسید بگید این کارو کن، اول تست کنید. با تشکر از همگی

mehdi.mousavi
جمعه 26 آذر 1389, 00:50 صبح
من می خوام :


Graphic a = everyThing.CreateGraphic() -----> Bitmapeverything = هر چیزی که بشه ازش شیء Graphic رو گرفت.

سلام.
شما مسیر رو دارید اشتباه میرید. جای اینکه CreateGraphics رو روی Control فراخوانی کنید که یک Graphics بگیرید، از DrawToBitmap استفاده کنید. بطور نمونه:



using (Bitmap bmp = new Bitmap(100, 100))
{
this.button1.DrawToBitmap(bmp, this.button1.ClientRectangle);
bmp.Save("d:\\temp1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}اینطوری شکل button1 رو در یک Bitmap میریزید و اونو ذخیره می کنید (یا به Image میتونید Cast اش کنید و باهاش هر کاری لازمه بکنید).
در صورت نیاز نیز می تونید DC جدیدی از روی اون Bitmap بسازید و روی تصویری که Control تولید میکنه، بازهم نقاشی کنید:



using (Bitmap bmp = new Bitmap(100, 100))
{
using (Graphics gfx = Graphics.FromImage(bmp))
{
gfx.FillRectangle(Brushes.White, 0, 0, 100, 100);
this.button1.DrawToBitmap(bmp, this.button1.ClientRectangle);
}
bmp.Save("d:\\temp2.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}موفق باشید.

پاورقی: تصاویر زیر، تصویر ایجاد شده توسط دو Code Block فوق رو نشون میده. تصویری که پس زمینه سیاه رنگ داره، مربوط به کد اول، و اون یکی مربوط به کد دوم میشه.

6372063721

Diaco.10727
جمعه 26 آذر 1389, 09:15 صبح
ممنون دوست عزیز، عالی بود. من یه چیز جدید از شما یاد گرفتم، باشه که جبران کنم...

اما، کنترلی که من دارم استفاده می کنم این دستور رو ساپورت نمی کنه...
بازم برگشتیم سر خونه اول.

من دارم از کنترل WebBrowser استفاده می کنم، اگر می تونید در این مورد یه کمکی بکنید، باز هم از همگی شما و البته آقای موسوی متشکرم.

mehdi.mousavi
سه شنبه 30 آذر 1389, 00:16 صبح
اما، کنترلی که من دارم استفاده می کنم این دستور رو ساپورت نمی کنه... بازم برگشتیم سر خونه اول. من دارم از کنترل WebBrowser استفاده می کنم، اگر می تونید در این مورد یه کمکی بکنید

سلام.
کنترل WebBrowser از WebBrowserBase مشتق شده، و WebBrowserBase روی خودش، متود DrawToBitmap رو داره. بنابراین می تونید روی WebBrowser بدون هیچ مشکلی از متود مزبور استفاده کنید تا محتوای WebBrowser رو به Bitmap مورد نظر تبدیل کنید.

موفق باشید.

پاورقی: ببخشید دیر پاسخ دادم، این روزها قدری کارم زیاده...