Изменения размера иконки MenuItems в разных системах - PullRequest
0 голосов
/ 19 мая 2019

У меня есть WPF UserControl, размещенный внутри приложения WinForms. У этого UserControl есть ContentControl, у которого есть ContextMenu. У ContextMenu есть несколько MenuItem с, для каждого из которых свойство Icon имеет значение .ico.

По какой-то причине значки становятся массивными в разных системах. Я протестировал их на компьютерах с Windows 10 и Windows 7, и они в порядке, но на других машинах win10 / win7 они огромны.

Фактические .ico файлы варьируются от 32x32 бит до 256x256.

Вот как они выглядят нормально: enter image description here

Вот как они выглядят на некоторых машинах: enter image description here

Вот .xaml:

<UserControl x:Class="TestUC.MainWindow"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="737.239" Width="1455.446"
    <Grid>
        <ContentControl>
            <ContentControl.ContextMenu>
                <ContextMenu>
                    <MenuItem Header="Pan">
                        <MenuItem.Icon>
                            <Image Source="Images/panHand.ico" />
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="Zoom In">
                        <MenuItem.Icon>
                            <Image Source="Images/zoom_In.ico" />
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="Zoom Out">
                        <MenuItem.Icon>
                            <Image Source="Images/zoom_Out.ico" />
                        </MenuItem.Icon>
                    </MenuItem>
                </ContextMenu>
            </ContentControl.ContextMenu>
        </ContentControl>
    </Grid>
</UserControl>

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

1 Ответ

1 голос
/ 19 мая 2019

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

Они выбирают большие значки, тогда Windows предпочтет большую версию ICO.

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

В любом случае, он выбирает 256x256, а вы не указали его размер, поэтому он решает, что изображение 256x256.

IMO.

Это плохая идея использовать ico или любой растровый файл для этого материала в приложении wpf.

Вы лучше всего используете векторную графику.

Путь к простой иконографии.

С меню, которое также означает некоторую перестановку или замену заголовка.

Но тогда вы можете иметь согласованную масштабируемую иконографию для всего приложения.

Использование очень легких геометрий в словаре ресурсов.

...