2016-10-05 3 views

ответ

0

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

private void ResizeInkRuler() { 
    var viewBoxWidth = ImageViewBox.ActualWidth; 
    var viewBoxHeight = ImageViewBox.ActualHeight; 
    var widthIsGreater = viewBoxWidth.CompareTo(viewBoxHeight) > 0; 

    var scaleFactor = widthIsGreater ? InkImage.ActualWidth/viewBoxWidth : InkImage.ActualHeight/viewBoxHeight; 
    var length = widthIsGreater ? viewBoxWidth : viewBoxHeight; 
    ruler.Transform = Matrix3x2.CreateScale((float) scaleFactor); 
    ruler.Length = length; 
} 
0

Не могли бы вы рассказать о том, как правильная фигура правильна для вас (возможно, вы получите снимок экрана и фрагмент XAML)? Я сделал быструю демонстрацию вашего сценария, и линейка отобразилась правильно для меня (все увеличивается на 200%, как ожидалось).

<Grid Background="Black"> 
    <Viewbox Width="600" Height="600"> 
     <Grid Width="300" Height="300" Background="White"> 
      <InkCanvas x:Name="inkCanvas"/> 
      <InkToolbar TargetInkCanvas="{x:Bind inkCanvas}" VerticalAlignment="Top"/> 
     </Grid> 
    </Viewbox> 
</Grid> 

InkCanvas screenshot

+0

Спасибо, Десятилетие, вы знаете, как я могу масштабировать его до первоначального размера? – Jennifer