2013-03-09 53 views
0

我目前正在研究基于Kinect的项目,我找不到如何调整图像相对于图像中心的大小。我设法更新图像的宽度和高度,因为我移动手并调整图片大小,但是相对于TopLeft角落。所以,基本上如果你想象一个矩形,左上角总是固定的,而其他角落移动。图片仅在从右到左和从下到上的方向上调整大小。图像调整大小相对于图像中心

我第一次尝试使用ScaleTransform来调整图像大小,并且我可以指定转换原点(我在图片中间设置),但它不允许更新结果中的图像大小。 。所以它对我没有用处。

所以,如果有人可以给我一些关于如何动态调整大小调整任务的想法,我将非常感激。也许有一些方法如何将点设置为与左上方不同的值?

在此先感谢!

+0

您需要将图像首先转换到原点,应用您缩放,然后将其转换回原来的中心。请参阅[这个答案]中的scaleImage()函数(http://stackoverflow.com/questions/9792835/image-manipulation-wont-display-transformed-image)。 – beaker 2013-03-09 14:38:53

+0

谢谢你的想法!我还认为我可以更新边距以在缩放时在需要的方向上移动图像,从而产生缩放从中心发生的印象。 – user2151660 2013-03-09 14:50:21

+0

如果你有办法将原点移动到图像的中心,那就行了。否则,在编码或计算(转换矩阵在将它们应用于图像中的点之前,将它们相乘)中,转换为原点和返回不涉及太多开销。 – beaker 2013-03-09 15:02:46

回答

0

您可以使用RenderTransformOrigin移动缩放操作的中心点。例如:

<Setter Property="RenderTransformOrigin" Value="0.5, 0.5" /> 

我不得不与从UserControl中心调整有关DP类似的问题。在接受的答案的评论之一中提到了如何从对象中心调整大小的发现。

Growing UserControl Size with Style Trigger?

+0

我想我以前见过,但ScaleTransform的问题在于它不会更新图片的缩放宽度和高度。 – user2151660 2013-03-09 17:02:47

+0

也许我误解了需要。如果你想拍一张照片并缩小或增大它,ScaleTransform应该这样做,而RenderTransformOrigin将允许你移动该比例的原点。 – 2013-03-13 17:37:36