Код:
void Form1::_DownloadProgressChanged(System::Object ^sender, System::Net::DownloadProgressChangedEventArgs ^e)
{
DateTime startTime = static_cast<DateTime>(e->UserState);
Int64 brSize = e->BytesReceived;
Int64 tbtrSize = e->TotalBytesToReceive;
Int64 ProgressPercentage = brSize * 100 / (tbtrSize);
Int32 speed = (brSize / 1024) / (DateTime::Now - startTime).TotalSeconds;
String^ drawString = Convert::ToString(ProgressPercentage) + "% Speed:"+Convert::ToString(speed)+" Кб/с";
System::Drawing::Font^ drawFont = gcnew System::Drawing::Font( "Arial",8.25 );
SolidBrush^ drawBrush = gcnew SolidBrush( Color::Black );
PointF drawPoint = PointF(324/2 - 10, 23 / 2 - 7);
progressBar1->Refresh();
progressBar1->Value = e->ProgressPercentage;
progressBar1->CreateGraphics()->DrawString( drawString, drawFont, drawBrush, drawPoint );
}
работает ,но мерцает , периодически исчезает текст и появляется через пол секунды .
сложные расчеты?backgroundworker?
add глючит на вин7
на 2003 не глючит;
debug намекает что строчка пропадает при
Код:
while(_WebClient->IsBusy)
{
Application::DoEvents();
}
Добавлено через 1 час 7 минут
перенес
Код:
while(_WebClient->IsBusy)
{
String^ drawString = Convert::ToString(ProgressPercentage) + "% Speed:"+Convert::ToString(speed)+" Кб/с";
System::Drawing::Font^ drawFont = gcnew System::Drawing::Font( "Arial",8.25 );
SolidBrush^ drawBrush = gcnew SolidBrush( Color::Black );
PointF drawPoint = PointF(324/2 - 10, 23 / 2 - 7);
progressBar1->CreateGraphics()->DrawString( drawString, drawFont, drawBrush, drawPoint );
Application::DoEvents();
}
перестало мигать
Код:
void Form1::_DownloadProgressChanged(System::Object ^sender, System::Net::DownloadProgressChangedEventArgs ^e)
{
DateTime startTime = static_cast<DateTime>(e->UserState);
Int64 brSize = e->BytesReceived;
Int64 tbtrSize = e->TotalBytesToReceive;
ProgressPercentage = brSize * 100 / (tbtrSize);
speed = (brSize / 1024) / (DateTime::Now - startTime).TotalSeconds;
progressBar1->Refresh();
progressBar1->Value = e->ProgressPercentage;
}