变换影响不同的对象坐标系

时间:2018-11-16 02:39:39

标签: wpf xaml canvas scaletransform

因此,我尝试使用其他画布和标签翻转Grid中的图像和画布,但是其他画布对象的鼠标移动坐标系会受到影响。

使用rendertransform.scaletransform翻转图像,并且画布还使用MeasurementControl(名为CanvasOverlay)翻转画布的坐标系。只是不明白为什么。

我的理解是,转换将作用于包含在其中的对象而不是其他对象。但是显然不是这样。

另一个关键是,interaction.trigger会将变换属性ProbeAlignRight更改为1或-1。这应该使用椭圆和多边形翻转图像和画布。问题是CanvasOverlay不会翻转,但是当控件移动时,它会镜像到鼠标。显然,它是将坐标系从左上0,0翻转到右上。这真令人困惑。

            <Grid>
                <Image Name="usimagesrc" Source="{Binding UltrasoundImageSource, Converter={StaticResource nullValueConverter}}" Height="512" Width="512" 
                       RenderTransformOrigin="0.5,0.5">
                    <Image.RenderTransform>
                        <ScaleTransform ScaleX="{Binding ProbeAlignRight}"/>
                    </Image.RenderTransform>
                </Image>
                <Canvas RenderTransformOrigin="0.5,0.5" Focusable="True" Height="25" VerticalAlignment="Top">
                    <Ellipse x:Name="circleFrench" Height="25" Width="25" Fill="{DynamicResource StepperButtonBlueBorderBrush}" HorizontalAlignment="Left" VerticalAlignment="Top" />
                    <Polygon  Points="0,0 0.05,0.5 0,1 0.5,0.5" Fill="{DynamicResource StepperButtonBlueBorderBrush}" Width="25" Height="25" Stretch="Fill" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="25" />
                    <Canvas.RenderTransform>
                        <ScaleTransform ScaleX="{Binding ProbeAlignRight}" />
                    </Canvas.RenderTransform>
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="MouseDown" >
                            <i:InvokeCommandAction Command="{Binding _flipImageCommandObj}" />
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </Canvas>
                <Canvas>
                    <Label Canvas.Top="-2" Canvas.Left="18" Style="{DynamicResource InstructionsLabel}" Content="{lex:Loc DragMeasurementCircle}" Visibility="{Binding EnableMeasurementMessage, Converter={StaticResource BooleanToVisibilityConverter}}"/>
                </Canvas>
                <Canvas x:Name="CFMBoxCanvas" ClipToBounds="True" />
                <UIUtilities:UltrasoundDepthGauge x:Name="DepthGauge" Opacity=".4" DepthInCentimeters="{Binding DepthInCentimeters}"/>
                <Canvas x:Name="CanvasOverlay" Visibility="{Binding EnableMeasureController, Converter={StaticResource BooleanToVisibilityConverter}}" >
                    <UIUtilities:MeasurementControl x:Name="MeasurementTool" Canvas.Top="100" Canvas.Left="300"/>
                </Canvas>
                <Label  Content="{Binding DepthString}" Foreground="White" FontSize="16" FontWeight="Bold" VerticalAlignment="Bottom" HorizontalAlignment="Center" Background="Black"/>
            </Grid>

0 个答案:

没有答案