Нежелательный интервал / изменение размера изображения в C # WPF StackPanel - PullRequest
0 голосов
/ 11 октября 2018

Надеюсь, что это просто - однако я не могу найти ни одной публикации, которая имеет отношение к теме.

Я строю горизонтальную панель StackPanel с изображениями, и по какой-то причине ОДНА из изображений продолжает немного изменяться в размере, вызывая очень нежелательную границу вокруг изображения.Могу ли я что-нибудь сделать, чтобы вывод был таким, чтобы исходный размер изображения был в пикселях, или я могу отключить что-то, позволяющее этой StackPanel немного изменить размер моего изображения?

You can see the border causing gaps right after the Title text

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

Image titleRightCap = new Image();
        titleRightCap.Source = new BitmapImage(new Uri("pack://application:,,,/skins/default/top_r_title_cap.png", UriKind.Absolute));
        borderTop.Children.Add(titleRightCap);
        titleRightCap.Loaded += delegate (object s, RoutedEventArgs e)
        {
            headWidth += titleRightCap.ActualWidth;
        };

Вот вывод в реальном времени, где вы можете увидеть разницу в размере:

Live Output

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

1 Ответ

0 голосов
/ 11 октября 2018

Итак, я не уверен , почему это происходило.Однако, похоже, что это касается неких внутренних математических вычислений.

Этот элемент является «верхним» пограничным элементом управления, который генерируется динамически и расширяется при изменении размеров окон.Для динамического расширения есть элемент сетки с кистью, который просто закрашивает фон границы для заполнения.Однако для этого необходимо правильно рассчитать ширину всех других элементов в элементе управления границей.

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

Каким бы образом StackPanel интерпретировал эти изменения размера, он по какой-то причине изменял размер этогоИзображение, чтобы компенсировать ширину, чтобы она достигла точно 100% ширины.

Итак, что я сделал, чтобы это исправить, - это взял значение Width моей динамически генерируемой метки заголовка и округлил значение до следующего ближайшего целого числа:

titleTextGraphic.Width = Math.Ceiling(titleTextGraphic.ActualWidth);

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

enter image description here

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...