преобразование влияет на другую систему координат объекта - PullRequest
0 голосов
/ 16 ноября 2018

Поэтому я пытаюсь перевернуть изображение и холст в сетке с другим холстом и надписью, но это влияет на систему координат перемещения мыши другого объекта холста.

Использование rendertransform.scaletransform для переворачивания изображения, а холст также переворачивает систему координат холста с помощью MeasurementControl (с именем CanvasOverlay). Просто не понимаю почему.

Насколько я понимаю, преобразование будет действовать на объект, в котором оно содержится, а не на другие объекты. Но ясно, что это не так.

Еще один ключ заключается в том, что взаимодействие.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>
...