Рейтинг:
8
Dave Kreskowiak
Тебе это не понравится. Это не ошибка, по крайней мере, не в Windows Forms или элементах управления.
Это ошибка в вашем понимании того, как элементы управления работают в Windows Forms.
Во-первых, контроль не является прозрачным. Но я слышу, как вы говорите: "Я установил фон PictureBox прозрачным!" Да, но "прозрачный" не означает того, что ты думаешь.
Установка фона элемента управления в прозрачный просто говорит элементу управления принять фоновые свойства контейнера, в котором находится элемент управления, а именно вашей формы. Таким образом, прозрачный дает иллюзию прозрачности, если фон элемента управления совпадает с фоном его контейнера, но только при определенных условиях.
В одном из этих условий иллюзия прозрачности нарушается, когда ваша вершина (в терминах Z-порядка) Элемент управления PictureBox перекрывает нижний уровень управления PictureBox. Пиксели, занятые нижним уровнем PictureBox, перерисовываются более высоким уровнем. Поскольку фон верхнего уровня PictureBox совпадает с фоном формы, это создает иллюзию, что ваш нижний уровень picturebox исчезает или имеет отверстие в нем.
Так как же вы обходите это? Для этого есть множество трюков. То, что применимо, зависит от того, что вы делаете со своими изображениями.
Один из способов-вообще не использовать PictureBoxes. Вместо этого вы сами рисуете изображения на поверхности формы с помощью своего собственного кода рисования. Однако то, насколько это будет сложно, зависит от вашего приложения.
tool__
Спасибо за ваш ответ, вы спасли меня от большой работы ни за что, рисуя картинки в windows forms, я не думаю, что это возможно, так как картинки очень сложны и они должны быть сделаны в программе рисования. Можете ли вы предложить мне какой-либо язык программирования, на котором я могу работать с несколькими перекрывающимися прозрачными изображениями? чтобы изобразить их так, как это делает, например, photoshop...
Ralf Meier
Вы должны создать свой собственный настроенный PictureBox, который имеет "реальное" поведение прозрачности.
CodeProject имеет несколько примеров, которые показывают, как сделать элемент управления реальным прозрачным.
Это может быть способ для вас ... но вы должны решить, хотите ли вы идти этим путем ...
Dave Kreskowiak
"Сложный" не имеет ничего общего с этим, если вы показываете их в PictureBox. Это означает, что у вас есть файл, который вы можете загрузить с растровым объектом и нарисовать изображение на поверхности формы самостоятельно, используя обычные графические методы.
tool__
Я искал в WPF в течение получаса и выяснил, как легко и идеально отображать несколько перекрывающихся прозрачных GIF-файлов... Я не уверен, с каким приложением идти, WPF выглядит лучше, у него также есть это окно кода в нижней части, что имеет гораздо больше смысла, вы ставите курсор на строку и автоматически выбираете объект, на который он ссылается в окне дизайна...
Но я не знаю, какие проблемы возникнут в будущем с WPF, моя цель - сделать автономный exe-файл для windows,
Каково Ваше мнение о WPF в целом?
Dave Kreskowiak
WPF превосходит Windows Forms, IMHO.
Проблема с ним заключается в действительно крутой кривой обучения.
tool__
Что значит крутая кривая обучения? не могли бы вы объяснить еще несколько слов, пожалуйста?
Dave Kreskowiak
Это нелегко понять. В одной книге, которая у меня есть, более 1100 страниц.