У меня довольно неприятная проблема с изображениями на кнопках в .NET. Они не ведут себя так, как вы ожидали бы, что изображение на кнопке будет вести себя.Изображение кнопки не совпадает с текстом при нажатии кнопки?
В свойствах кнопки вы можете установить изображение. Поэтому я выбираю изображение, и изображение появляется на кнопке! Все идет нормально. Когда кнопка нажата или нажата, текст кнопки будет перемещаться вниз и вправо на один пиксель, чтобы создать глубину. Но не образ! Он останется в том же положении, и это будет выглядеть странно. Существует также свойство BackgroundImage, но это еще хуже! Потому что, если я установил BackgroundImageLayout на None вместо Center, изображение переместит вверх и оставит при нажатии, полное противоположное направление текста! Что с этим?
В любом случае, то, что я хочу достичь, - это изображение кнопки, которое движется так же, как текст будет перемещаться, когда кнопка находится в нажатом состоянии. Есть ли способ сделать это?
Это хорошо работает, пока вы не переместите курсор за пределы кнопки при нажатии кнопки. Кнопка снова появится, как и текст, но не изображение. Кроме того, некоторые графические макеты не имеют перемещения текста вниз/вправо, поэтому было бы здорово иметь какой-то способ определить положение текста или что-то еще, поэтому изображение всегда имеет такое же смещение, как текст. – Labbed
@Labbed: Я не уверен в получении смещения текста, вам, вероятно, потребуется нарисовать кнопку для растрового изображения (для этого есть функция: 'button1.DrawToBitmap') и искать черные пиксели. Я отредактирую свой ответ, чтобы исправить проблему, когда курсор покинет область кнопки. – Timo
Спасибо, но теперь он запустит MouseDown, как только я навещу кнопку. Поиск черных пикселей тоже не является хорошей идеей, так как вы можете изменить цвет текста, и большинство систем сегодня используют ClearType для управления текстом, поэтому вы также не можете искать Системный цвет. Я на самом деле даже не использую текст на кнопке, я просто хочу, чтобы изображение перемещалось, как в других программах с изображениями на кнопках. Я не понимаю, почему .NET имеет это странное поведение по умолчанию. – Labbed