- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 WPF 的新手,经过相当多的尝试后,我终于在我正在工作的项目中按照我喜欢的方式安排了控件。我有一个显示图像的矩形。鼠标滚轮使用 ScaleTransform
动画缩放图像,鼠标单击/拖动在屏幕上移动图像。问题是如果我放大或缩小图像然后尝试移动它,它会自动将其自动缩放回 1(原始大小)。缩放时有什么方法可以移动它吗?编辑:我尝试将 ScaleTransform 和 TranslateTransform 设置为 TransformGroup,但仍然无效。
我遇到的另一个问题是,如果图像大于父容器,它就会超出范围,我尝试在父容器上设置 ClipToBounds = True
,但没有用.
代码:
private void Window_MouseWheel_1(object sender, MouseWheelEventArgs e)
{
if (e.Delta > 0)
{
ScaleTransform scaleP = new ScaleTransform();
scaleP.CenterX = e.GetPosition(this).X;
scaleP.CenterY = e.GetPosition(this).Y;
rect.RenderTransform = scaleP;
DoubleAnimation dblAnimX = new DoubleAnimation();
dblAnimX.From = scaleXFrom;
dblAnimX.To = scaleXTo + 0.1;
scaleXFrom = scaleXTo +0.1;
scaleXTo += 0.1;
Duration = new Duration(TimeSpan.FromSeconds(0.15));
DoubleAnimation dblAnimY = new DoubleAnimation();
dblAnimY.From = scaleYFrom;
dblAnimY.To = scaleYTo + 0.1;
scaleYFrom = scaleYTo +0.1;
scaleYTo += 0.1;
Duration = new Duration(TimeSpan.FromSeconds(0.15));
scaleP.BeginAnimation(ScaleTransform.ScaleXProperty, dblAnimX);
scaleP.BeginAnimation(ScaleTransform.ScaleYProperty, dblAnimY);
}
else
{
ScaleTransform scaleM = new ScaleTransform();
scaleM.CenterX = e.GetPosition(this).X;
scaleM.CenterY = e.GetPosition(this).Y;
rect.RenderTransform = scaleM;
DoubleAnimation dblAnimX = new DoubleAnimation();
dblAnimX.From = scaleXFrom;
dblAnimX.To = scaleXTo -0.1;
scaleXFrom = scaleXTo -0.1;
scaleXTo -= 0.1;
dblAnimX.Duration = new Duration(TimeSpan.FromSeconds(0.15));
DoubleAnimation dblAnimY = new DoubleAnimation();
dblAnimY.From = scaleYFrom;
dblAnimY.To = scaleYTo - 0.1;
scaleYFrom = scaleYTo -0.1;
scaleYTo -= 0.1;
Duration = new Duration(TimeSpan.FromSeconds(0.15));
scaleM.BeginAnimation(ScaleTransform.ScaleXProperty, dblAnimX);
scaleM.BeginAnimation(ScaleTransform.ScaleYProperty, dblAnimY);
}
}
private void rect_MouseMove_1(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
System.Windows.Point p = e.GetPosition(this);
TranslateTransform tt = new TranslateTransform();
tt.X = (p.X - mouseDownX);
tt.Y = (p.Y - mouseDownY);
rect.RenderTransform = tt;
}
}
最佳答案
或者您使用 MatrixTransform :
var matrix = Matrix.Identity;
matrix.Scale(1.5, 2.5);
matrix.Translate(30, 60);
rect.RenderTransform = new MatrixTransform(matrix);
或者更短:
var matrix = new Matrix(1.5, 0, 0, 2.5, 30, 60);
rect.RenderTransform = new MatrixTransform(matrix);
或者更好的是,您可以避免每次都设置一个新的 RenderTransform 并只更新变换矩阵:
// set RenderTransform once in constructor
rect.RenderTransform = new MatrixTransform()
...
// update matrix in event handler
((MatrixTransform)rect.RenderTransform).Matrix = new Matrix(...);
关于c# - TranslateTransform 取消 ScaleTransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14175404/
有什么方法可以将动画 TranslateTransform 捕捉到像素网格? 使用动画移动文本时,抖动非常严重。我想这是因为亚像素定位。我需要避免这种抖动。提出可能的方法。 最佳答案 听起来您希望在
我是 WPF 的新手,经过相当多的尝试后,我终于在我正在工作的项目中按照我喜欢的方式安排了控件。我有一个显示图像的矩形。鼠标滚轮使用 ScaleTransform 动画缩放图像,鼠标单击/拖动在屏幕上
我有一个 WPF Canvas ,我在上面通过代码动态创建对象。这些对象正在通过设置 RenderTransform 属性进行转换,并且需要应用这些转换之一的动画。目前,我无法获取任何转换的属性以进行
我正在将 Silverlight 3.0 + .Net 3.5 + VSTS 2008 + C# 用于 silverlight 应用程序。 我想学习 TranslateTransform 和 Rend
给定:Control (x:Name="border1") 带有 VisualStateManager .控件RenderTransform设置为 TransformGroup包含 Translate
这就是我在 WPF 中重现这个问题的方式: 创建自定义控件: public class TestCustomControl : Control { static TestCustomControl()
我想创建一个显示图像并具有工具栏面板的 wpf 用户控件,我想将下面列出的功能设置为我的用户控件: 当鼠标光标位于用户控件之外时,工具栏面板会隐藏。 当鼠标光标进入用户控件时,工具栏面板从用户控件的底
我有一个 Storyboard,例如 和网格
我正在绘制折线形状,并且这些点可以在 UWP 中的窗口外渲染。在这种情况下,我将使用 TranslateTransform 来平移折线以进行折线段。应用 TranslateTransform 时,线段
为了了解动画和 UI,我正在制作一个基本的 WPF/C# 应用程序,用户可以在其中选择要显示的车辆数量,然后这些车辆(即不同车辆的图像)出现在 Canvas 中并四处移动。 WPF 非常简单:
我可以使用它更改网格的宽度/高度,那么为什么在我使用 (Grid.RenderTransform).TranslateTransform.X 时它不起作用:
我的应用程序中已经有一个 WPF Image 控件。使用 ScaleTransform 和 TranslateTransform,Image 控件具有非常好的缩放和平移功能。 我想知道是否有任何方法可
无法理解为什么 Translatetransform 绑定(bind)不起作用。我有 3 个 slider - 一个用于缩放,2 个用于 x 和 y 变换(我在代码中将圆圈作为 Canvas 的子元素
我希望我问这个问题不是傻,但我正在尝试在 WPF 中设计一个图形查看器,作为框架中的新手;尽管我确实想出了一些解决问题的方法,但我最引以为豪的那个……在它应该起作用的地方不起作用。我想要做的是 在 I
在我的应用程序资源中,我定义了以下 Storyboard: App.xaml 在我后面的代码中,我将 Storyboard 应用于网格控件: Storyboard myStor
我正在尝试使用 StoryBoard 同时为 Rectangle 的 TranslateTransform 和 ScaleTransform 设置动画> 在代码隐藏中。我研究了一些类似的问题,但我仍然
我在 ItemsControl 中托管了一个 Wrappanel,它包裹在一个滚动查看器中。包装面板中的项目填充有绑定(bind)。每个项目都有一个带有数据触发器的数据模板。该触发器应该将项目动画化到
我有一个简单的应用程序,它由一个包含 Canvas (rootCanvas) 的 Window 组成。我正在尝试为此添加另一个 Canvas (测试)并将不同的变换应用于子 Canvas 的 Layo
我是一名优秀的程序员,十分优秀!