2011-01-19 2 views
1

Я хочу изменить ширину и высоту чернил в соответствии с экраном. Когда я меняю размер, ширина расширяется вправо, а высота расширяется донизу. Но inkcanvas не подходит для экрана.Изменение размера чернил на левом и верхнем

Я также хочу зафиксировать положение дочернего элемента inkcanvas. Если я смогу изменить размер inkcanvas, чтобы соответствовать экрану, положение дочернего элемента inkcanvas не изменится.

Как изменить размер чернил влево и вверх, чтобы соответствовать экрану?

alt text

<Canvas x:Name="Screen" > 

       <InkCanvas Name="inkcanvas" ResizeEnabled="True" 
          Width="{Binding ElementName=LayoutRoot, Path=ActualWidth}" 
         Height="{Binding ElementName=LayoutRoot, Path=ActualHeight}" 
          EditingMode="Select" ClipToBounds="False" 
        Background="Bisque" 
        SelectionChanging="OnSelectionChanging" 
        Visibility="Collapsed" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> 

        <!-- InkCanvas' Child Elements --> 
       </InkCanvas> 
       <Canvas.RenderTransform> 
        <MatrixTransform/> 
       </Canvas.RenderTransform> 
      </Canvas> 

Благодаря

Update: Я поставил InkCanvas в сетке. Он подходит для экрана, но положение дочернего элемента изменяется.

Я хочу исправить положение красного прямоугольника. alt text

Положение красного прямоугольника не должно изменяться. alt text

<Grid> 
     <InkCanvas x:Name="inkcanvas" Background="Transparent"> 
      <Rectangle Height="41" HorizontalAlignment="Left" Name="rectangle1" Stroke="Black" VerticalAlignment="Top" Width="69" Fill="#FFDB1111" /> 
     </InkCanvas> 
     </Grid> 

Моя большая Picure:

My WPF Application содержит много фотографий. Я могу увеличить/уменьшить холст. Я могу выбрать изображения с помощью инструмента выделения.

У меня есть холст и чернила.

  • холст: содержит изображение и увеличения/уменьшения масштаба

  • InkCanvas: есть инструмент

выбор Если я уменьшить, холст и InkCanvas становятся меньше.

Если я использую инструмент выделения, я скопирую все изображения с холста на inkcanvas.

Но inkcanvas уменьшает масштаб, я не могу использовать инструмент выделения, если за пределами границы чернил.

Именно по этой причине я хочу изменить размер чернил и зафиксировать положение детей.

+0

Дайте нам свой xaml, и мы покажем вам, что изменить. –

+0

Почему вы привязываете высоту и ширину к макету? Сетка автоматически доводит размеры своих детей до максимума. Пожалуйста, расскажите нам больше о том, чего вы хотите. что вы подразумеваете, устанавливая детей InkCanvas? Закрепить на холсте или на экране? Каков эффект, который вы пытаетесь достичь? –

ответ

0

Удалите все поля с чернильного стекла и поместите его в сетку.

Не могли бы вы объяснить, почему это не сработает для вас?

<Grid> 
    <InkCanvas> 
    ... 
    </InkCanvas> 
</Grid> 

Редактировать Есть два способа сохранить дочерний элемент, где:

  1. Как только положение или размер изменения InkCanvas настроить дочерние позиции соответственно. это означает, что вам нужно выбрать фиксированную позицию (окно topleft, screen topleft, ...), который определяет фактическое положение ребенка.
  2. Удалите ребенка из InkCanvas и положить его в правильном контейнере (тот, который определяет положение ребенка.

Я бы предпочел # 2, как это более логично и требует меньше вычислений/обработки событий

+0

Если я удалю край и поместил его в сетку, изменилось положение дочернего элемента inkcanvas. Но я хочу зафиксировать положение дочернего элемента inkcanvas. –

+0

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

+0

См. Мое обновление. –

0

Это зависит от контейнера вокруг InkCanvas. Кроме того, вы не можете ожидать, что дочерние элементы не будут перемещаться, если вы возитесь со своим контейнером. Если вам нужны дочерние элементы, которые ведут себя независимо от InkCanvas, вы можете захотеть переосмыслить, если это хорошая идея, и если то, что вы хотите выполнить, не может быть сделано более эффективно с использованием другой настройки.

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

+0

У меня много детей с чернилами. Я думаю, что если я переведу всех детей, он будет медленным. Есть ли у вас какие-либо другие подходы? –

Смежные вопросы