Я только что столкнулся с подобной проблемой, которую я смог решить, подумав очень серьезно. (Разве эти ситуации не велики?)
Объяснение
Во-первых, важно понимать, что ImageAlign НЕ означает, где на кнопке вы хотите изображение. Это означает, какую точку (пиксель) на изображении следует использовать для позиционирования. Поэтому, если вы выберете «TopLeft», самый верхний левый пиксель изображения будет вертикально центрирован на кнопке.
Проблема возникает, когда у вас есть кнопка с центрированным изображением, у которой ImageAlign установлен вертикально по центру, а размеры равны четному числу пикселей. Ваше изображение 16x16 пикселей - 16 четное число. Средний пиксель теоретически должен быть где-то между пикселем 8 и пикселем 9. Поскольку пикселя 8.5 нет, VB округляется до 8, тем самым используя пиксель 8 в качестве пикселя позиционирования. Это коренная причина вашего нежелательного верхнего поля.
Ваша кнопка имеет нечетную высоту пикселя (23 пикселя), что означает, что она имеет истинный центральный пиксель-пиксель 12. VB пытается расположить центральный пиксель изображения (8) поверх центрального пикселя кнопки (12). Это помещает 8 пикселей изображения ниже центра и 7 пикселей выше центра. Чтобы выровнять ситуацию, над изображением появляется поле размером в 1 пиксель.
Решение
Дополните изображение 1 дополнительным рядом пикселей внизу. Теперь изображение имеет нечетную высоту (17 пикселей), что дает ему истинный центральный пиксель, который может идеально совпадать с центральным пикселем кнопки.
Вот так я решил проблему для себя. Однако более простое возможное решение только что пришло мне в голову. Вероятно, вы могли бы достичь того же результата, назначив для изображения нижнее поле в 1 пиксель. Я не проверял это решение, но оно теоретически эквивалентно первому решению.
Дополнительное примечание: Два объекта ДАЖЕ размеров должны теоретически быть в состоянии выровнять по центру. Но как ни странно, проблема выравнивания возникает, даже если кнопка И изображение ОБА имеют четные размеры. (Очевидно, что компилятор не согласован в том, как он определяет центральный пиксель одного элемента управления по сравнению с другим.) Тем не менее, в этом случае применяется то же решение.