PDA

View Full Version : کمک جهت ایجاد مکث 5 ثانیه ای برای اجرای کد



sadeghpa80
پنج شنبه 19 تیر 1393, 02:03 صبح
سلام من طبق کد زیر صفحه وب رو عکس تبدیل میکنم

static Bitmap LoadImage()
{
return (Bitmap)Image.FromFile(@"C:\Photo\PhotoFull.bmp"); // here is large image 9222x9222 pixels and 95.96 dpi resolutions
}

static void TestBigImagePartDrawing()
{
using (var absentRectangleImage = LoadImage())
{
using (var currentTile = new Bitmap(560, 170))
{
currentTile.SetResolution(absentRectangleImage.Hor izontalResolution, absentRectangleImage.VerticalResolution);

using (var currentTileGraphics = Graphics.FromImage(currentTile))
{
currentTileGraphics.Clear(Color.Black);
var absentRectangleArea = new Rectangle(685, 135, 560, 170);
currentTileGraphics.DrawImage(absentRectangleImage , 0, 0, absentRectangleArea, GraphicsUnit.Pixel);
}

currentTile.Save(@"C:\Photo\Photo.bmp");
}
}
}

public class WebsiteToImage
{

private Bitmap _mBitmap;
private readonly string _mUrl;
private readonly string _mFileName = string.Empty;

public WebsiteToImage(string url)
{
// Without file
_mUrl = url;
}

public WebsiteToImage(string url, string fileName)
{
// With file
_mUrl = url;
_mFileName = fileName;
}

public Bitmap Generate()
{

// Thread
var mThread = new Thread(_Generate);
mThread.SetApartmentState(ApartmentState.STA);
mThread.Start();
mThread.Join();
return _mBitmap;
}

private void _Generate()
{
var browser = new WebBrowser { ScrollBarsEnabled = false };
browser.Navigate(_mUrl);
browser.DocumentCompleted += WebBrowser_DocumentCompleted;
while (browser.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
browser.Dispose();
}

private void WebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// Capture
var browser = (WebBrowser)sender;
if (browser.Document != null)
{
if (browser.Document.Body != null)
{
browser.ClientSize = new Size(1360, browser.Document.Body.ScrollRectangle.Bottom);
browser.ScrollBarsEnabled = false;
_mBitmap = new Bitmap(browser.Document.Body.ScrollRectangle.Width , browser.Document.Body.ScrollRectangle.Bottom);
}
}
browser.BringToFront();
browser.DrawToBitmap(_mBitmap, browser.Bounds);
// Save as file?
if (_mFileName.Length > 0)
{
// Save
_mBitmap.Save(_mFileName);
}
}
}

public static class BitmapExtensions
{
public static void SaveJpg100(Bitmap bmp, string filename)
{
var encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Qu ality, 100L);
bmp.Save(filename, GetEncoder(ImageFormat.Jpeg), encoderParameters);
}

public static void SaveJpg100(Bitmap bmp, Stream stream)
{

var encoderParameters = new EncoderParameters(1);
encoderParameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Qu ality, 100L);
bmp.Save(stream, GetEncoder(ImageFormat.Jpeg), encoderParameters);
}

public static ImageCodecInfo GetEncoder(ImageFormat format)
{
var codecs = ImageCodecInfo.GetImageDecoders();
return codecs.FirstOrDefault(codec => codec.FormatID == format.Guid);
// Return
}
}
private void Form1_Load(object sender, EventArgs e)
{
var websiteToImage = new WebsiteToImage("http://goldinfo.ir", @"C:\Photo\PhotoFull.bmp");
websiteToImage.Generate();
TestBigImagePartDrawing();
Application.Exit();
}
کار درست انجام میشه اما مشکل اینحاست که این سایت حدود 2 ثانیه طول میکشه که اطلاعاتش کامل بشه و این کد به محض اجرا کمتر از 1 ثانیه صفحه وب رو به عکس تبدیل میکنه

حالا چی کار کنم که ابتدا که میره به آدرس پیج یه 5 ثانیه تاخیر داشته باشه یا 5 ثانیه مکث کنه بعد صفحه رو ذخیره کنه
طبق جستجویی که کردم برای مکث باید از کد
Thread.sleep(5000) استفاده کنم اما نمی دونم کجای کد بالا از این کد استفاده کنم
ممنون از شما