2011-08-08 7 views
0

ハードドライブに保存したファイルで四角形を塗りつぶしています。私はImageBrushを使用しなければならないことを知っています。イメージがインクルードされたリソースであれば、その方法を知っていると思います。この場合、ファイルは作成され、ハードドライブ上で設定されますが、下のコードでそれを使用しようとすると、矩形は変更されますが、私が予想していたように、目に見えない)。ハードドライブからファイルを使用してImageBrushで矩形を塗りつぶすには

using (dynamic CommonDialog = AutomationFactory.CreateObject("WIA.CommonDialog")) 
    { 
     dynamic imageFile = CommonDialog.ShowAcquireImage(); 
     if (imageFile != null) 
     { 
      string filePath = string.Format("d:\\{0}.jpg", Guid.NewGuid()); 
      imageFile.SaveFile(filePath); 

      rectangle2.Fill = new ImageBrush() 
      { 
       ImageSource = new BitmapImage(new Uri(filePath, UriKind.Absolute)) 
      }; 
     } 
    } 

アップデート:私は、これは次のように続いている場合内部のコードブロックを置き換えることによって、仕事を得ることができました:

  { 
       string filePath = string.Format("d:\\{0}.jpg", Guid.NewGuid()); 
       imageFile.SaveFile(filePath); 

       BitmapImage bitmapBase = new BitmapImage(); 
       dynamic fileData = imageFile.FileData; 
       byte[] imageData = fileData.BinaryData; 
       MemoryStream ms = new MemoryStream(imageData); 
       bitmapBase.SetSource(ms); 
       WriteableBitmap writableBitmap = new WriteableBitmap(bitmapBase); 

       rectangle2.Fill = new ImageBrush() { ImageSource = (writableBitmap) }; 

      } 

答えて

1

あなたはAから、画像、または任意のファイルにアクセスすることはできませんローカルドライブ(隔離されたストレージまたはファイルを開くダイアログからのストリームを除く)これらはすべてセキュリティ対策です。

あなたはブラウザからは言及しなかったので、私はこれが単なるWeb /クライアントアプリだと仮定しました。

+0

申し訳ありません。私はブラウザから取り組んでいます。あなたの回答に基づいて、私はそれを保存しているのと同じようにCommonDialogを使用して開くことができると仮定しています。私はそれを試みるつもりです、そして、このスレッドを更新するために戻るでしょう。 –

1

Silverlight 4を使用すると、ローカルディスクの一部にアクセスできるブラウザ外のアプリケーションを作成できます。

See here how

関連する問題