2016-10-27 7 views
0

ダウンロード可能なアプリケーションの一覧をアイコンの列で表示するプログラムがあります。それは、MySQLデータベースからデータを取得しますが、イメージをリンクとして取得します。ダウンロードしていないDataGridViewのリンクから画像を表示する方法

イメージをクライアントコンピュータにダウンロードせずに表示する方法はありますか?もしあれば、誰かが私にどのように教えてくれる?誰かがその行のイメージがダウンロードされているかどうかをチェックする方法を教えてもらえない場合は表示し、表示されていない場合はURLからダウンロードして表示しますか?

このようなことを初めて行ったので、詳細やサイトへのリンクを提供してください。私は約3週間前にウィットC#を始めました。

+3

「取得せずにビットを取得する方法」 "何も食べずに夕食を食べる"。できません。画像を表示せずに画面に画像を表示することはできません。ちょうどあなたがテキストを表示せずに画面にテキストを表示することができないように。 –

答えて

0

あなたの質問は私には広がっているように見えますが、あなたのお気に入りの検索エンジンWebサイトを使用して回答を見つけることができます。最後に小さなサンプルアプリケーションと共に答えがあります。

  1. いいえ、ダウンロードせずに画像を取得することはできません。 URLはインターネットユニバースのどこかのイメージを指し示す単なるテキストです。
  2. ただし、誰かがそれを見つけたら、彼は貴族賞を受け取るべきです。
  3. イメージがローカルに格納されているパスがわかっている場合は、このファイルがまだ存在するかどうかを確認するだけです。
  4. ローカルに存在しない場合は、明らかにダウンロードする必要があります。
  5. ダウンロードしたら、イメージを認識する適切な列の下にあるDataGridViewに表示するだけで済みます。

ここでは、始めるために約束された小さなサンプルアプリケーションです。

namespace WindowsFormsApplication 
{ 
    using System; 
    using System.Data; 
    using System.Drawing; 
    using System.IO; 
    using System.Net; 
    using System.Windows.Forms; 

    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      dataGridView1.DataSource = GetDataTable(); 
     } 

     private DataTable GetDataTable() 
     { 
      DataTable dataTable = new DataTable(); 
      dataTable.Columns.Add("Image", typeof(Image)); 

      // Path to store locally the image 
      string imageLocalPath = AppDomain.CurrentDomain.BaseDirectory + "image.ico"; 

      if (File.Exists(imageLocalPath)) 
      { 
       dataTable.Rows.Add(new object[] { Image.FromFile(imageLocalPath) });      
      } 
      else 
      { 
       // Get request to download the image if it does not exist locally 
       var request = WebRequest.Create("http://cdn.sstatic.net/Sites/stackoverflow/img/favicon.ico?v=4f32ecc8f43d"); 

       using (var response = request.GetResponse()) 
       using (var stream = response.GetResponseStream()) 
       { 
        // Check if the request is successful 
        if ((response as System.Net.HttpWebResponse).StatusCode == HttpStatusCode.OK) 
        { 
         var image = Bitmap.FromStream(stream); 
         image.Save(imageLocalPath); 

         dataTable.Rows.Add(new object[] { image }); 
        } 
        // No local image exist and the URL is no longer valid 
        else 
        { 
         // The default Windows Forms image will be displayed 
        } 
       } 
      } 

      return dataTable; 
     } 
    } 
} 
+0

実際にファイルを保存せずにイメージをダウンロードして使用する方法はありますか?アプリのリストはアプリではなくサイトから編集されるので、アプリが削除されても画像はまだ未使用の状態になります...また、画像がどの行にあるかを「検出」する必要があります。例えば、私がビジュアルスタジオのインストーラを持っているなら、ビジュアルスタジオのイメージが必要です。それ、どうやったら出来るの? –

関連する問題