簡體   English   中英

如何在路徑幾何數據中的(x,y)對中的x中加1,然后用新數據替換舊數據?

[英]How can I add 1 to x in (x,y) pairs in a Path geometry data, then replace the old data with the new one?

感謝你們對我的幫助! 我下面顯示了一些簡單的C#代碼

public partial class MainWindow : Window
{
   string data_1 = "M-4.31151201443541,459.82996768458L4.78848798556448,444.929957684579...z";

   //......

   private void timer_Tick(object sender, EventArgs e)
   {
      data_2 = Regex.Replace(data_1, "((?=[^, ])\\d+\\.\\d+),", (match) => (double.Parse(match.Groups[1].Value) + 1).ToString()+",");

      Mountain.SetValue(Canvas.ClipProperty,Geometry.Parse(data_2));
   }
}

我想更改data_1 (來自WPF中路徑的原始幾何數據),向其中的每個(x,y)對添加1,然后將其放入畫布的ClipProperty中。

現在,我真正感到困惑的是,應該將代碼1、2和3放在哪里,應該如何定義它們,以及應該如何排列data_1data_2的位置 (我應該將所有data_2替換為data_1 。如果我將code_2定義為string data_2 ...... ,程序將產生錯誤結果,如果我在代碼2之前加上var ,似乎Mountain.ClipProperty並沒有改變,我對所有這些東西感到很困惑。

如何更改MountainclipProperty

謝謝!

完整數據_1顯示在此處: 完整數據_1

PS我在該程序中有一個計時器,因此這些代碼將一次又一次地運行。 如果我按原樣說的話,我認為每次code_2都會有相同的結果,因為data_1來自code_1

以下是我的xmal 路線圖

<Grid x:Name="LayoutRoot">
    <Canvas ......>
        <Canvas ......>
            <Canvas x:Name="Color" Height="234.4" Width="288" Canvas.Top="-48.967" Canvas.Left="-97.6">
               <......>
            </Canvas>
            <Canvas ......>
            <Canvas ......>
                <Path x:Name="mountain" Data="..." ... KeyDown="path_KeyDown"/>
            </Canvas>
        </Canvas>
    </Canvas>
</Grid>

彩色帆布和山路是我的目標( 此處顯示了整個彩色 數據

這是給你的照片。 這是原始圖片。 我想用顏色一樣的形狀, 這個 要移動的山 ,我想用在keyDown,即如果我按一個鍵,大 1高移動從它原來的地方,從而改變顏色剪輯

以下是結合了keyDown和您的代碼的一些代碼

    private void path_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
    {

        if (e.KeyStates == Keyboard.GetKeyStates(Key.Up))
        {
        var clipGeom = ((Geometry)this.Resources["mountain"]).Clone();
        var yTransform = new TranslateTransform();
        clipGeom.Transform = yTransform;
        Color.Clip = clipGeom;
        var yAnim = new DoubleAnimation { From = 0, To = 900, Duration= new Duration(TimeSpan.FromMilliseconds(9000)) };
        yTransform.BeginAnimation(TranslateTransform.YProperty, yAnim);
        }
    }

但是,運行此程序后,按鍵時山就不會動了。 此外,我認為DoubleAnimation之后的{}也應進行一些更改以適合我的keyDown操作 我應該怎么做?

謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM