问题标签 [rendertransform]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1215 浏览

wpf - 更改 UIElement 的角度

我有这个代码:

这设置了Angle我的Image元素.. 它可以工作,但是它并没有像我预期的那样移动。

我只是想知道是否Angle是根据图像的右上角设置的?那么,它是否将图像从图像的右侧旋转 25 度?

0 投票
0 回答
107 浏览

c# - 如何计算其他控件的 RenderTransformOrigin 标准?

我想计算其他控件的“RenderTransformOrigin”标准。请看这张图片,因为我的英语说得不好。

图 1

有盒子放在同一层。不是孩子,不是父母。绿色框理论上是父级。所以所有控件的 RenderTransformOrigin 与绿色框的位置相同。但我认为 RenderTransformOrigin 是本地坐标系。

我想计算 RenderTransformOrigin ...

感谢您

编辑 我目前正在尝试这种方式....

中心点(局部坐标系?)

ItemHeight * CriteriaItem.OriginY
ItemWidth * CriteriaItem.OriginX

计算(中心点在结果之上)

CenterPoint.X / TargetBoxWidth
CenterPoint.Y / TargetBoxHeight

Final
Convert TargetBox的locar坐标系)

Cavnas.TranslatePoint(CalculatedPoint, TargetBox)

编辑
我以上述方式解决了。

扩展方法

用法

但....

当我更改“RenderTransformOrigin”时,这个旋转和位置发生了变化......

旋转完成后,想办法在不使用 RotateTransform 的情况下保持旋转对象。

帮我。

谢谢你。

0 投票
1 回答
85 浏览

c# - 缩放父项中的未缩放控件

我有一个 WPF UserControl,它的作用类似于视口(在以下上下文中我将其称为“视口”)。此视口可以缩放和平移其内容(我认为缩放使用 Layout- 或 RenderTransform 来缩放内容)。基本上内容只是一个画布。这个画布包含一些形状和一些用于显示形状元数据的文本框。如果缩放因子为 1,一切都很好,但如果我缩小,画布会缩小,而且 TextBoxes 也会导致元数据不可读,因为文本太小了。

如何强制 TextBoxes 反缩放,以便它们不会改变屏幕上的大小?

我曾考虑将视口的变换(导致缩放)传递给文本框(以某种方式)并将其逆向应用于它们,但这对我来说似乎是错误的。另一种方法是使用包含 TextBoxes 的 Adorner。我在Stackoverflow上找到了一个关于带有控件的装饰器的主题,但我不确定这种方法是否比另一种更好。

因此,如果有人有更好的解决方案,我将不胜感激。

提前致谢

0 投票
0 回答
81 浏览

c# - 如何在椭圆内约束对象的运动?

场景

我在网格中有几个对象。我在他们的操作增量事件中翻译它们。对象似乎卡在用户的指针下方。它有效,看起来像这样:

每个可移动对象都有一个椭圆边界,不应将其拖动到该边界之外。这个值很容易计算。像这样的东西:

要求

如果请求的点在椭圆边界之外,我想实现某种不会转换元素的逻辑。

在此处输入图像描述

一些东西,也许是这样的:

我可以轻松编写代码以将逻辑限制为矩形。但是矩形不是必需的,椭圆是。上面代码中的TODO部分是这个问题的核心。

先感谢您。

0 投票
0 回答
120 浏览

c# - WPF:如何仅在一个轴上减少线条厚度

在 WPF 中,我试图在 UserControl 中绘制图形线。我需要按不同的量缩放 X 和 Y 值。

我有一个示例项目,我将在下面包含。问题是,当我使用 RenderTransform 缩放图形线时,LineThickness 也会被缩放。这通常不会成为问题,因为我可以通过缩放值的倒数对线条粗细进行缩放: LineThickness = desiredLineThickness * (1/scaledValue)

不幸的是,在这个应用程序中,我需要通过非常不同的值来缩放 X 和 Y 尺寸,并且 LineThickness 没有分成 X 和 Y 值。

在下面的示例中,我正在绘制一个正弦波,该正弦波被缩放到用户控件的绘图表面的大小。您可以看到峰和谷延伸到绘图表面之外。这是因为原始数据从 1.0 变为 -1.0,并缩放到绘图表面的高度并转换到绘图表面的中间。

为了更清楚地展示它,我还画了一条从 0,0 到 90,90 的蓝线,然后从 90,90 水平向右。这条线也被缩放到绘图表面的高度。可以看到水平线很粗。

我需要一种方法来将 Y 轴上的这些线与 X 轴分开,在这种情况下不会缩放。

我尝试了几种方法,包括制作包含的线条对象。我在想我可以将线条的端点放在缩放位置,然后在绘制实际线条时,我会使用渲染变换来缩放 Y 值,但由于整个绑定代理问题,我永远无法让它工作.

任何人有任何想法或曾经面临过这个问题?我不能成为第一个遇到这个问题的人。

这是代码:

UserControl1.xaml.cs:

用户控件.xaml:

GraphPen.cs:

MainWindow.xaml:

MainWindow.xaml.cs:

按海报编辑

我忘了显示 BindingProcy.cs

按海报编辑

这是一个屏幕截图:

在此处输入图像描述

0 投票
0 回答
1269 浏览

c# - UWP:在 WebView 上使用 ScaleTransform 来缩放/缩放内容

我正在尝试使用 ScaleTransform 缩小 WebView,同时正确缩放(缩放)内容。即,如果我使用 ScaleTransform 将 WebView 缩放到大小的 50%,则内容也应该缩放到 50% 缩放级别,因此您可以看到与以前相同的内容,只是缩小以适应 WebView 的新大小。

我知道这是可能的,因为当您应用 ScaleTransform 时 AdControl 会正确缩放其内容,并且 AdControl 在内部使用 WebView 控件来显示广告。

与 AdControl 一起使用的示例代码:

如果将相同的代码应用于 WebView 控件,它会缩小控件的大小,但内容会被剪裁而不是缩小。

正确缩放控件的内容不应需要使用 JavaScript 注入或任何其他“笨拙”的方法,因为 Microsoft 的 AdControl 是否会使用此类技术是非常值得怀疑的。它都应该能够在 XAML 或代码隐藏 (C#) 中处理。

谢谢您的帮助!

0 投票
0 回答
115 浏览

c# - 调整大小时避免 Windows 窗体裁剪图像

我目前正在开发一种允许在不同窗口中打开多个图像的工具。主要目标是能够分别移动/调整表单和图像的大小。这是一个非常简单的表单,包含一个边框,包含一个图像。我可以使用变换组平移和缩放图像,一切正常。

我的问题是,如果我将窗口调整为比图像更小的尺寸,然后将图像移动到窗口内,则调整大小后不可见的部分图像被裁剪,并且只能在调整窗口大小时检索本身。以同样的方式,如果我减小图像大小然后减小窗口大小,图像将被裁剪。

所以我想知道是什么因素导致了这种行为,有没有办法摆脱它?要么首先要求表单不要裁剪图像,要么在翻译时重绘它?

XAML

截图

编辑:如果相关,这是图像翻译和缩放的代码:

0 投票
0 回答
1305 浏览

c# - Wpf Width、ActualWidth 和 RenderSize 结果相同

尝试在 WPF 中获取转换(旋转)元素的实际宽度时遇到问题。我在画布中有一个包含图像的矩形。当我旋转矩形时,我想让渲染的宽度在我的窗口中居中,但无论我如何尝试,我总是得到基本宽度。

我尝试使用 Width、ActualWidth、RenderSize.Width :完全相同的结果。我尝试使用 LayoutTransform 和 RenderTransform,同样如此。

我真的不明白我做错了什么,我读到的关于这个主题的所有内容都表明我应该使用 ActualWidth 来获取整个边界框的渲染宽度,而不是我的矩形/图像的默认宽度。

这是我的代码:

设置 scaleTransform :

和旋转:

谢谢 !

0 投票
1 回答
1313 浏览

c# - 使用布局变换以图像中心为原点缩放

我想在画布控件中缩放图像,保持画布中心为原点。最初我尝试使用渲染变换效果很好,但缩放后没有出现滚动条。我搜索了一下,发现布局变换应该用于该目的.我的问题是我现在在缩放后得到滚动条但缩放原点在画布的左上角,我怎样才能将它设置为中心。

一些建议说要在布局变换上设置 centerX 和 centerY,但我的应用程序的大小是动态的,我可能不固定中心点。

0 投票
0 回答
362 浏览

wpf - 在图像渲染期间难以将 ScaleTransform (WPF) 与 Transalate Transform 相结合

WPF。

(我预先申请了看似代码墙,但问题对我来说似乎很复杂,我希望尽可能完整)。

我有一个放在 InkCanvas 上的图像:

在调整大小显示之前:在此处输入图像描述

在 DragDelts 期间调整路径轮廓显示:在此处输入图像描述

拖动完成后。注意: 我希望左上角位于“X”的位置,即 DRAGCOMPLETE 时光标所在的位置在此处输入图像描述

这是我用来实现上述图像的代码。本质上,问题归结为在调整图像大小后计算正确的平移变换。我已经尝试了所有我能想到的但没有成功。真正令人困惑的是,光标的偏移量似乎在某种程度上取决于图像被放到 InkCanvas 上的位置。也就是说,如果图像被放置在更靠近左边界的位置,则偏移量会比放置在中心位置时更加明显。非常混乱。

ImageResizing.Create() 现在将 rendertransforms 和 thumb 装饰器添加到图像以调整大小、移动和旋转:

TopLeft Thumb 装饰器定义为:

我正在使用 DragDelta 将轮廓路径元素定位到最终所需的大小,如下所示:

请注意,我打算使用左上角从右下角调整图像大小。因此,随着左上角被拖动,图像的所有点都将远离右下角。

最后,我使用 DragCompleted 事件在图像上实际执行新的渲染:

为了完整起见,装饰器被定位为:

我一定会很感激任何帮助或建议。我究竟做错了什么?

TIA

注意:这个问题的答案是缩放导致倾斜