WebBrowser控件不显示所有图像

时间:2017-10-25 07:09:01

标签: c# image winforms webbrowser-control

案例:

我正在创建一个Windows窗体应用程序,但我在Web浏览器上显示图像时遇到问题。大约10%的图像不会出现,并且会出现" X"(未加载),我很确定它是由documentCompleted代码引起的。我没有使用这种方法尝试了200张图像,但它们都显示出来了,并且代码中不会显示大约30张。

程序:

我填充字符串数组" allFiles"我使用folderBrowserDialog选择了所有图像路径。 代码:

browseButton.Click += (sender, args) =>
{
    //Creating and opening FolderBrowserDialog.
    using (var fbd = new FolderBrowserDialog())
    {
            fbd.RootFolder = Environment.SpecialFolder.Desktop;
            DialogResult result = fbd.ShowDialog();

            //Check if chosen directory is valid.
            if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
            {
                     index = 0;
                     lblPath.Text = "Path: " + fbd.SelectedPath.ToString();
                     //Create array for all items in selected directories.
                     allFiles = Directory.GetFiles(fbd.SelectedPath, "*.*", System.IO.SearchOption.AllDirectories);
                     changeImage(false, false, false, false, false, false);
                     createLogFile();
             }
      }  
};

要遍历所有图像并在webbrowser中显示它们,请使用以下代码:

BrowseRightButton.Click += (sender, args) =>
{
  changeImage(false, true, false, false, false, false);
};

此按钮在单击时调用方法changeImage(更新全局变量索引),请参阅下面的changeImage代码:

private void changeImage(bool left, bool right, bool left10, bool right10, bool leftEnd, bool rightEnd)
{
 if (right == true)
 {
      index += 1;
      fileName = allFiles[index];
      webBrowser1.Navigate(fileName);
      updateLabel();

 }
 else if (left == true)
 {
      index -= 1;
      fileName = allFiles[index];
      webBrowser1.Navigate(fileName);
      updateLabel();
 }
 else if (left10 == true)
 {
      index -= 10;
      fileName = allFiles[index];
      webBrowser1.Navigate(fileName);
      updateLabel();
 }
 else if (right10 == true)
 {
      index += 10;
      fileName = allFiles[index];
      webBrowser1.Navigate(fileName);
      updateLabel();
 }
 else if (leftEnd == true)
 {
      index = 0;
      fileName = allFiles[index];
      webBrowser1.Navigate(fileName);
      updateLabel();
 }
 else if (rightEnd == true)
 {
      index = allFiles.Length - 1;
      fileName = allFiles[index];
      webBrowser1.Navigate(fileName);
      updateLabel();
 }
 else if (left == false && right == false && left10 == false && right10 == false && leftEnd == false && rightEnd == false)
 {
       fileName = allFiles[0];
       webBrowser1.Navigate(fileName);
 }
}

此方法缩放图像,使其适合webBrowser:

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    if (allFiles[index].EndsWith("JPG") || allFiles[index].EndsWith("PNG") || allFiles[index].EndsWith("jpg") || allFiles[index].EndsWith("png"))
    {
            webBrowser1.Document.Body.SetAttribute("scroll", "no");
            var img = webBrowser1.Document.GetElementsByTagName("img")
                         .Cast<HtmlElement>().FirstOrDefault();
            var w = img.ClientRectangle.Width;
            var h = img.ClientRectangle.Height;
            img.Style = string.Format("{0}: 100%", w > h ? "Width" : "Height");
        }      
}

我得到&#34; X&#34;:

的图像

OneDrive链接包含60张图片和一个GIF(位于OneDrive文件夹的末尾),我测试并失败:https://1drv.ms/f/s!AtHq6La_gCehhBvv9d-TLA3wNOYG

0 个答案:

没有答案