谢谢你帮助我!我有一些简单的 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 ......
,程序将产生错误结果。如果我把var
放在代码 2之前,似乎Mountain.ClipProperty没有被更改。我对所有这些东西真的很困惑。
我应该怎么做才能改变山的剪辑属性?
谢谢!
完整data_1如下所示:完整data_1
附言我在这个程序中有一个计时器滴答声,所以这些代码会一次又一次地运行。如果我像原来这样说,我认为每次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>
彩色画布和山路是我的目标(此处显示了整个颜色数据。
这里有一些图片给你。这是原始图片。我想用山来剪裁这样的颜色形状。要移动山,我想使用一个键,即如果我按下一个键,山会从原来的位置向上移动 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操作。我应该怎么做?
谢谢!