-1

20 枚の画像があります。それらは ball1、ball2、...、ball20 です。

おそらく、使用して画像を挿入しました

Image x:Name="ball1" Source="/Images/ball1.png" Canvas.Left="150" Canvas.Top="200".xaml で。

現在、この方法で挿入しようとしました

Uri uri = new Uri("/Images/ball1.png", UriKind.Relative);
ImageSource img = new System.Windows.Media.Imaging.BitmapImage(uri);
image.SetValue(Image.SourceProperty, img);
cv.Children.Add(image);

ただ、挿入したい位置が特定されていないので、このままでは使えませんでした。

.xaml を介して行うことを避けたいのですが、.cs で配列を使用して行うにはどうすればよいですか?

4

2 に答える 2

0

これを行うには、添付プロパティ (Canvas.Left および Canvas.Top) を設定する Canvas クラスの適切な静的メソッドを呼び出します。

Uri uri = new Uri("/Images/ball1.png", UriKind.Relative);
ImageSource img = new System.Windows.Media.Imaging.BitmapImage(uri);
image.SetValue(Image.SourceProperty, img);
cv.Children.Add(image);

// Position the image on the canvas
Canvas.SetLeft(150);
Canvas.SetTop(200);

表示する画像のリストがある場合は、次のようにすることができます。

        List<Uri> imageUris = new List<Uri>() 
        { 
            new Uri(@"C:\Users\Grant\Pictures\Heron_zoomed.png"),
            new Uri(@"C:\Users\Grant\Pictures\bridge.jpg") 
        };

        int left = 20;
        int top = 10;

        foreach (var uri in imageUris)
        {
            Image image = new Image { Source = new BitmapImage(uri) };
            Canvas.SetLeft(image, left);
            Canvas.SetTop(image, top);
            MainCanvas.Children.Add(image);

            left += 400;
        }

上記のコードは、ウィンドウ xaml に次のようなものがあり、imageUris リストにファイル名が存在することを前提としています。

<Grid>
    <Canvas x:Name="MainCanvas">

    </Canvas>
</Grid>

これらの画像で何をしようとしているのかわかりません。それらをグリッドに表示したいだけの場合は、WPF コレクション コントロールの 1 つを使用して、コードなしでこれを行うことができます。

これを行う1つの方法は、WPFでグリッドに画像を表示することです

より良い代替手段があると思いますが、これが始まりです。

于 2013-07-25T11:48:00.517 に答える
0

XAML でオブジェクトを宣言し、必要に応じてコード ビハインドまたはビュー モデルからプロパティをImage更新できます。Sourceこの方法では、ビュー モデルまたはコード ビハインドの画像ごとに 1 つのプロパティが必要になります。

public string Image1SourcePath
{
    get { return image1SourcePath; }
    set { image1SourcePath = value; NotifyPropertyChanged("Image1SourcePath"); }
}
...
public string Image20SourcePath
{
    get { return image20SourcePath; }
    set { image20SourcePath = value; NotifyPropertyChanged("Image20SourcePath"); }
}

INotifyPropertyChanged何らかの形のインターフェースを実装していることを確認してください

<Image Source="{Binding Image1SourcePath}" Canvas.Left="150" Canvas.Top="200" />
...
<Image Source="{Binding Image20SourcePath}" Canvas.Left="1500" Canvas.Top="200" />

次に、ビュー モデルまたはコード ビハインドで:

Image1SourcePath = "/YourApplicationName;component/Images/ball1.png";
...
Image20SourcePath = "/YourApplicationName;component/Images/ball20.png";

これは大量のコードですがImage.Source、コード ビハインドからプロパティを更新し、XAML で位置を設定できます。

于 2013-07-25T11:38:32.357 に答える