ManipulationDelta.Scale Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Düzenlemenin çarpan olarak yeniden boyutlandırdığı miktarı alır veya ayarlar.
public:
property System::Windows::Vector Scale { System::Windows::Vector get(); };
public System.Windows.Vector Scale { get; }
member this.Scale : System.Windows.Vector
Public ReadOnly Property Scale As Vector
Özellik Değeri
Düzenlemenin yeniden boyutlandırıldığı miktar.
Örnekler
Aşağıdaki örnekte olay için bir olay işleyicisi gösterilmektedir ManipulationDelta . Örnek, bir öğesini taşımak, yeniden boyutlandırmak ve döndürmek Rectangleiçin , Scaleve özelliklerini uygularTranslation.Rotation Bu örnek, İzlenecek Yol: İlk Dokunmatik Uygulamanızı Oluşturma başlığı altındaki daha büyük bir örneğin bir parçasıdır.
void Window_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
{
// Get the Rectangle and its RenderTransform matrix.
Rectangle rectToMove = e.OriginalSource as Rectangle;
Matrix rectsMatrix = ((MatrixTransform)rectToMove.RenderTransform).Matrix;
// Rotate the Rectangle.
rectsMatrix.RotateAt(e.DeltaManipulation.Rotation,
e.ManipulationOrigin.X,
e.ManipulationOrigin.Y);
// Resize the Rectangle. Keep it square
// so use only the X value of Scale.
rectsMatrix.ScaleAt(e.DeltaManipulation.Scale.X,
e.DeltaManipulation.Scale.X,
e.ManipulationOrigin.X,
e.ManipulationOrigin.Y);
// Move the Rectangle.
rectsMatrix.Translate(e.DeltaManipulation.Translation.X,
e.DeltaManipulation.Translation.Y);
// Apply the changes to the Rectangle.
rectToMove.RenderTransform = new MatrixTransform(rectsMatrix);
Rect containingRect =
new Rect(((FrameworkElement)e.ManipulationContainer).RenderSize);
Rect shapeBounds =
rectToMove.RenderTransform.TransformBounds(
new Rect(rectToMove.RenderSize));
// Check if the rectangle is completely in the window.
// If it is not and intertia is occuring, stop the manipulation.
if (e.IsInertial && !containingRect.Contains(shapeBounds))
{
e.Complete();
}
e.Handled = true;
}
Private Sub Window_ManipulationDelta(ByVal sender As Object, ByVal e As ManipulationDeltaEventArgs)
' Get the Rectangle and its RenderTransform matrix.
Dim rectToMove As Rectangle = e.OriginalSource
Dim rectTransform As MatrixTransform = rectToMove.RenderTransform
Dim rectsMatrix As Matrix = rectTransform.Matrix
' Rotate the shape
rectsMatrix.RotateAt(e.DeltaManipulation.Rotation,
e.ManipulationOrigin.X,
e.ManipulationOrigin.Y)
' Resize the Rectangle. Keep it square
' so use only the X value of Scale.
rectsMatrix.ScaleAt(e.DeltaManipulation.Scale.X,
e.DeltaManipulation.Scale.X,
e.ManipulationOrigin.X,
e.ManipulationOrigin.Y)
'move the center
rectsMatrix.Translate(e.DeltaManipulation.Translation.X,
e.DeltaManipulation.Translation.Y)
' Apply the changes to the Rectangle.
rectTransform = New MatrixTransform(rectsMatrix)
rectToMove.RenderTransform = rectTransform
Dim container As FrameworkElement = e.ManipulationContainer
Dim containingRect As New Rect(container.RenderSize)
Dim shapeBounds As Rect = rectTransform.TransformBounds(
New Rect(rectToMove.RenderSize))
' Check if the rectangle is completely in the window.
' If it is not and intertia is occuring, stop the manipulation.
If e.IsInertial AndAlso Not containingRect.Contains(shapeBounds) Then
e.Complete()
End If
e.Handled = True
End Sub
Açıklamalar
Scale ve Expansion özelliklerinin her ikisi de yeniden boyutlandırma düzenlemesi bildirir. İkisi arasındaki fark, değerin bildirildiği yoldur. özelliği değeri Scale çarpan olarak bildirir. 0,5 ise Scale , işleme boyutu yüzde 50 azaltma olarak yorumlanır. Scale 2 ise, düzenleme boyutu yüzde 100 artırdığı olarak yorumlanır. özelliği, Expansion cihazdan bağımsız birimlerde (birim başına 1/96 inç) yeniden boyutlandırma manipülasyonunu bildirir.