PDA

View Full Version : سوال: ذخیره mschart



fm.ghias
یک شنبه 21 مهر 1392, 11:51 صبح
سلام من توی یکی از صفحات سایتم با مقادیر بانک اطلاعاتی یک chart رسم می کنم حالا می خوام این امکان رو به کاربر بدم که chart رو به صورت jpg برای خودش ذخیره کنه کسی هست که بدونه باید چی چار چنم؟

fm.ghias
دوشنبه 22 مهر 1392, 12:21 عصر
کسی نمی دونه؟ خیلی کارم گیره کلی هم سرچ کردم چیزی پیدا نکردم ......

mohammad973
دوشنبه 22 مهر 1392, 12:55 عصر
سلام دوست عزیز ؛
برای ذخیره نمودار ترسیم شده ، از متد EditCopy مربوط به کنترل mschart استفاده کن تا ابتدا تصویر در کلیپ بورد کپی بشه . بعد از یک کنترل PictureBox استفاده کن و کلیپ بوردت رو داخلش Paste کن . بعدش دیگه خیلی راحت با یه متد ذخیره عکس اون رو ذخیره کن .
اینم یه نمونه کد برای شما ::

private void Command1_Click()
{
MSChart1.EditCopy;
Picture1.Picture = Clipboard.GetData(vbCFMetaFile);
SavePicture Picture1.Picture, "C:\\Image1.wmf";
}


لینک این آموزش ::
http://binaryworld.net/Main/CodeDetail.aspx?CodeId=389

فیلم هم اگر خواستی : لینک دوم از یوتیوب رو باز کن :
http://www.google.com/search?q=How+to+Export+MS+Chart+to+an+Image+or+a+P DF+file&oq=How+to+Export+MS+Chart+to+an+Image+or+a+PDF+fil e&aqs=chrome..69i57&sourceid=chrome&ie=UTF-8

fm.ghias
دوشنبه 22 مهر 1392, 17:10 عصر
ممنون از لطفتون اما من با c# کد می نویسم نمی دونید توی c#چطوریه؟

negar.rafie
دوشنبه 22 مهر 1392, 17:21 عصر
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
saveFileDialog1.Filter = "Bitmap (*.bmp)|*.bmp|JPEG (*.jpg)|*.jpg|EMF (*.emf)|*.emf|PNG (*.png)|*.png|SVG (*.svg)|*.svg|GIF (*.gif)|*.gif|TIFF (*.tif)|*.tif";
saveFileDialog1.FilterIndex = 2 ;
saveFileDialog1.RestoreDirectory = true ;

if(saveFileDialog1.ShowDialog() == DialogResult.OK)
{
ChartImageFormat format = ChartImageFormat.Bmp;

if( saveFileDialog1.FileName.EndsWith( "bmp" ) )
{
format = ChartImageFormat.Bmp;
}
else if( saveFileDialog1.FileName.EndsWith( "jpg" ) )
{
format = ChartImageFormat.Jpeg;
}
else if( saveFileDialog1.FileName.EndsWith( "emf" ) )
{
format = ChartImageFormat.Emf;
}
else if( saveFileDialog1.FileName.EndsWith( "gif" ) )
{
format = ChartImageFormat.Gif;
}
else if( saveFileDialog1.FileName.EndsWith( "png" ) )
{
format = ChartImageFormat.Png;
}
else if( saveFileDialog1.FileName.EndsWith( "tif" ) )
{
format = ChartImageFormat.Tiff;
}
else if( saveFileDialog1.FileName.EndsWith( "svg" ) )
{
format = ChartImageFormat.Svg;
}



Chart1.SaveImage( saveFileDialog1.FileName, format );
}

fm.ghias
سه شنبه 23 مهر 1392, 13:01 عصر
اینو قبلا امتحان کرده بودم اما این خطا رو نشونم می ده البته بهتره بدونید که من هیچ جای سایتم thread ندارم Current thread must be set to single thread apartment (STA) mode before OLE calls can be made. Ensure that your Main function has STAThreadAttribute marked on it. This exception is only raised if a debugger is attached to the process. به این صورت تغییرش دادم اما حالا چارت رو نمی شناسه چی کار کنم protected void save_Click(object sender, EventArgs e) { Thread newThread = new Thread(new ThreadStart(ThreadMethod)); newThread.SetApartmentState(ApartmentState.STA); newThread.Start(); } public void ThreadMethod() { SaveFileDialog saveFileDialog1 = new SaveFileDialog(); saveFileDialog1.Filter = "Bitmap (*.bmp)|*.bmp|JPEG (*.jpg)|*.jpg|EMF (*.emf)|*.emf|PNG (*.png)|*.png|SVG (*.svg)|*.svg|GIF (*.gif)|*.gif|TIFF (*.tif)|*.tif"; saveFileDialog1.FilterIndex = 2; saveFileDialog1.RestoreDirectory = true; saveFileDialog1.ShowDialog(); if (saveFileDialog1.ShowDialog() == DialogResult.OK) { ChartImageFormat format = ChartImageFormat.Bmp; if (saveFileDialog1.FileName.EndsWith("bmp")) { format = ChartImageFormat.Bmp; } else if (saveFileDialog1.FileName.EndsWith("jpg")) { format = ChartImageFormat.Jpeg; } else if (saveFileDialog1.FileName.EndsWith("emf")) { format = ChartImageFormat.Emf; } else if (saveFileDialog1.FileName.EndsWith("gif")) { format = ChartImageFormat.Gif; } else if (saveFileDialog1.FileName.EndsWith("png")) { format = ChartImageFormat.Png; } else if (saveFileDialog1.FileName.EndsWith("tif")) { format = ChartImageFormat.Tiff; } Chart1.SaveImage(saveFileDialog1.FileName, format); }

mohammad973
سه شنبه 23 مهر 1392, 20:34 عصر
ممنون از لطفتون اما من با c# کد می نویسم نمی دونید توی c#چطوریه؟

خوب دوست عزیز ، من هم که #C برات نوشتم ! اگر میخوای توابع اون صفحه رو به سی شارپ تبدیل کنی ، کانورتر کدهای VB به #C توی اینترنت هست . دانلود کن و خودت سریع تبدیلش کن .