[英]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_1和data_2的位置 (我應該將所有data_2替換為data_1 。如果我將code_2定義為string data_2 ......
,程序將產生錯誤結果,如果我在代碼2之前加上var
,似乎Mountain.ClipProperty並沒有改變,我對所有這些東西感到很困惑。
如何更改Mountain的clipProperty ?
謝謝!
完整數據_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.