Страница: 1 |
Страница: 1 |
Вопрос: Исчезание картинки [.NET]
Добавлено: 01.07.05 03:38
Автор вопроса: freeloader | Web-сайт:
Дело в том, что я рисую на форме одну хрень. Так вот если эту хрень перекрыть другим окном или просто свернуть, а потом развернуть, то оно исчезает.
Дайте плиз простой и понятный пример как этого хозяйства избежать.
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Ваня
ICQ: 193909609
Вопросов: 4
Ответов: 14
Web-сайт:
Профиль | | #1
Добавлено: 01.07.05 11:31
Либо перерисовывай эту хрень в событии Form1_Paint
Либо (если эта хрень долго рисуется) используй:
Dim g As Graphics = Me.CreateGraphics.FromImage(Me.Image)
g.РисуешьХрень
g.Dispose()
Если это картинка, то
Номер ответа: 2
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #2
Добавлено: 01.07.05 14:22
Перерисовывать действительно долго.
А тот твой вариант, чето не катит... можешь выслать готовое решение на then@mail.ru
Номер ответа: 3
Автор ответа:
Ваня
ICQ: 193909609
Вопросов: 4
Ответов: 14
Web-сайт:
Профиль | | #3
Добавлено: 01.07.05 21:07
Действительно не катит. Извеняюсь, поспешил. Вот как надо:
If (aOpenFileDialog.ShowDialog = DialogResult.OK) Then
Me.BackgroundImage = Image.FromFile(aOpenFileDialog.FileName)
End If
Dim g As Graphics = Me.CreateGraphics.FromImage(Me.BackgroundImage)
g.FillRectangle(New SolidBrush(Me.BackColor), New Rectangle(New Point(0, 0), Me.Size))
g.DrawRectangle(New Pen(Color.Red), New Rectangle(10, 10, 200, 200))
g.Dispose()
Посылаю...
Номер ответа: 4
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #4
Добавлено: 02.07.05 12:41
2 Ваня: сильно мутно что-то...
Вот функция для получения Graphics созданного Bitmap, привязанного к
PictureBox:
Dim bmp As Bitmap
bmp = New Bitmap(pic.Width, pic.Height)
pic.Image = bmp
Dim G As Graphics
G = Graphics.FromImage(bmp)
Return G
End Function
Номер ответа: 5
Автор ответа:
freeloader
ICQ: 50804884
Вопросов: 72
Ответов: 642
Web-сайт:
Профиль | | #5
Добавлено: 03.07.05 10:07
А вот мне интерестно почему такой кусок кода работает?
Dim g As Graphics = Me.CreateGraphics.FromImage(Me.BackgroundImage)
g.FillRectangle(New SolidBrush(Me.BackColor), New Rectangle(New Point(0, 0), Me.Size))
g.DrawRectangle(New Pen(Color.Red), New Rectangle(10, 10, 200, 200))
g.Dispose()
смотрел смотрел, что то невкуриваю вообще
Но работает, и более того картинка не исчезает, объясните плиз, почему оно не исчезает?
Номер ответа: 6
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #6
Добавлено: 03.07.05 11:17
Потому что работает по тому же принципу, что и моя функция... Создается Bitmap и на нем рисуется то, что нужно.
Номер ответа: 7
Автор ответа:
KOKA
Вопросов: 14
Ответов: 27
Профиль | | #7
Добавлено: 07.07.05 01:25
К сожалению, если сильно динамичная, быстро изменяющаяся графика - то метод с Bitmapoм не катит... Но если не нужно много перерисовывать или "перемещать" графику, то это лучший способ для ее отображения, чтобы она не стиралась (не нужно много писанины для перерисовки)!
Номер ответа: 8
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #8
Добавлено: 07.07.05 10:06
Да, естественно. Bitmap - для вывода статичных картинок. Для отрисовки динамичной графики больше подойдет ее отрисовка по событию Paint.