Редактировать: Я был несколько успешным и считаю, что это может не сработать. В настоящее время это мерцает плохо, при этом Panel1 является Refreshhed() в моем цикле, но это не проблема и может быть исправлено в более позднем методе визуализации. Отказ от пользовательского элемента управления, и в обход непрозрачности материала, я использую следующие в основной панели случае краски, которая находится на главной форме:Создать образ из родительской графической графики (не фонового изображения)
Dim tempImage = New Bitmap(Picturebox1.Width, Picturebox1.Height)
Dim memoryGraphics As Graphics = Graphics.FromImage(tempImage)
Dim screenPos As Point = Picturebox1.PointToScreen(New Point(0, 0))
memoryGraphics.CopyFromScreen(screenPos.X, screenPos.Y, 0, 0, Picturebox1.Size)
Dim destRect As New Rectangle(0, 0, Panel1.Width, Panel1.Height)
Dim srcRect As New Rectangle(picscreen.Location.X, picscreen.Location.Y, Panel1.Width, Panel1.Height)
e.Graphics.DrawImage(tempImage, destRect, srcRect, GraphicsUnit.Pixel)
На моей форме: Picturebox1.Location (208, 0) & Панель 1. Расположение (208, 0). Оба родителя элемента управления должны быть основной формой, и я не могу назначить родительский элемент Panel1 Picturebox1.
Идея состоит в том, чтобы полупрозрачный дисплей панели над картой (графика Picturebox1). С приведенным выше кодом я показываю смещение того, что нарисовано на Panel1, от того, что нарисовано на Picturebox1, примерно на 208 пикселей (или налево на обоих элементах управления).
Я могу немного изменить некоторые точки в коде, чтобы уменьшить смещение, но это начнет показывать серый фон Panel1, который находится на Picturebox1: [т.е. Dim srcRect As New Rectangle (picscreen.Location.X - 100 ...] даст мне 100 пикселей серого с панели 1, и показать 100 пикселей ближе к выстроены ... идти более делает полный серый Panel1 цвет фона появляются вместо:
Потому что это получает изображение из всего, что есть на Picturebox1, оно также получает Panel1, а не то, что находится под ним. Я не верю, что то, что я пытаюсь сделать, будет возможно
Трудно угадать, что «непрозрачности эффект» может означать. Просто не используйте Panel, используйте событие Paintbox, чтобы добиться такого же эффекта. Задайте свойство Graphics.CompositingMode и рисуйте, скажем, Graphics.FillRectangle(). –
Поскольку графика нарисована на кадре, у него нет изображения или фонового изображения, а только графика, нарисованная на нем. Панель содержит дополнительные элементы управления. Я не уверен, что смогу нарисовать поддельную панель с непрозрачностью, а затем поместить все элементы управления. – Recoil
Какова роль фотошопа во всем этом? как материал, постоянно наносимый на ПБ? – Plutonix