Image
新しい場所に移動しようとしている 1x1 グリッドにWPFがあります。私は次のコードを使用しています:
public void AnimateImage(int seatNum, int cardNum)
{
// This method animates dealing a cardback image to the specified seat.
//
Point[][,] Margins;
Margins = CardMargins; // CardMargins contains the positions to where the cards should end up after being moved.
Image CardbackImage1 = CardbackImages[seatNum, cardNum];
// Specify the starting position of the image.
CardbackImage1.Margin = new Thickness(DealerStartX, DealerStartY, 0, 0);
CardsGrid.Children.Insert(seatNum, CardbackImage1);
// Note that if instead of specifying the starting point, the to-point is specified instead,
// and a return inserted at this point - it displays the card in the correct location.
TranslateTransform trans = new TranslateTransform();
CardbackImage1.RenderTransform = trans;
double ToPosX = Margins[NumSeats][seatNum, cardNum].X;
double ToPosY = Margins[NumSeats][seatNum, cardNum].Y;
// DoubleAnimation CardsAnimX = new DoubleAnimation(DealerStartX, 65, TimeSpan.FromSeconds(DealAnimateTime));
DoubleAnimation CardsAnimX = new DoubleAnimation(DealerStartX, ToPosX, TimeSpan.FromSeconds(DealAnimateTime));
// DoubleAnimation CardsAnimY = new DoubleAnimation(DealerStartY, DealerStartY - 50, TimeSpan.FromSeconds(DealAnimateTime));
DoubleAnimation CardsAnimY = new DoubleAnimation(DealerStartY, ToPosY, TimeSpan.FromSeconds(DealAnimateTime));
trans.BeginAnimation(TranslateTransform.XProperty, CardsAnimX);
trans.BeginAnimation(TranslateTransform.YProperty, CardsAnimY);
}
CardMargins
配列は、カードの最終的な位置を保持するために使用されます。カードは動きますが、問題は、カードが適切な場所に配置されていないことです。配列内の値とCardMargins
配列のインデックスが正しいことを確認しました。TranslateTransform
メソッドが別のタイプの座標を使用しているか、別の座標系を使用していると思われます。
margin をアニメーション プロパティとして使用できますか? もしそうなら、それを使用するために任意のタイプの変換を使用する必要がありTranslateTransform
ますか? マージンを使用せずに画像をアニメーション化するより良い方法はありますか?