Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Исчезание картинки [.NET] Добавлено: 01.07.05 03:38  

Автор вопроса:  freeloader  | Web-сайт: freeloader.folder-pro.net | ICQ: 50804884 

Дело в том, что я рисую на форме одну хрень. Так вот если эту хрень перекрыть другим окном или просто свернуть, а потом развернуть, то оно исчезает.
Дайте плиз простой и понятный пример как этого хозяйства избежать.

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 Ваня



ICQ: 193909609 

Вопросов: 4
Ответов: 14
 Web-сайт: www.UsverSoft.narod.ru
 Профиль | | #1
Добавлено: 01.07.05 11:31
Либо перерисовывай эту хрень в событии Form1_Paint

Либо (если эта хрень долго рисуется) используй:
Me.Image = New Bitmap(Me.Width, Me.Height, Me.CreateGraphics)
Dim g As Graphics = Me.CreateGraphics.FromImage(Me.Image)
g.РисуешьХрень
g.Dispose()


Если это картинка, то
Me.BackgroundImage.FromFile(FileName)

Ответить

Номер ответа: 2
Автор ответа:
 freeloader



ICQ: 50804884 

Вопросов: 72
Ответов: 642
 Web-сайт: freeloader.folder-pro.net
 Профиль | | #2
Добавлено: 01.07.05 14:22
Перерисовывать действительно долго.

А тот твой вариант, чето не катит... можешь выслать готовое решение на then@mail.ru

Ответить

Номер ответа: 3
Автор ответа:
 Ваня



ICQ: 193909609 

Вопросов: 4
Ответов: 14
 Web-сайт: www.UsverSoft.narod.ru
 Профиль | | #3
Добавлено: 01.07.05 21:07
Действительно не катит. Извеняюсь, поспешил. Вот как надо:
    Dim aOpenFileDialog As New OpenFileDialog
    If (aOpenFileDialog.ShowDialog = DialogResult.OK) Then
      Me.BackgroundImage = Image.FromFile(aOpenFileDialog.FileName)
    End If


    Me.BackgroundImage = New Bitmap(Me.Width, Me.Height)
    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-сайт: www.vbnet.ru
 Профиль | | #4
Добавлено: 02.07.05 12:41
2 Ваня: сильно мутно что-то...
Вот функция для получения Graphics созданного Bitmap, привязанного к
PictureBox:

    Public Function GetGraphicsObject(ByVal pic As PictureBox) As Graphics
        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-сайт: freeloader.folder-pro.net
 Профиль | | #5
Добавлено: 03.07.05 10:07
А вот мне интерестно почему такой кусок кода работает?
Me.BackgroundImage = New Bitmap(Me.Width, Me.Height)
    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-сайт: www.vbnet.ru
 Профиль | | #6
Добавлено: 03.07.05 11:17
Потому что работает по тому же принципу, что и моя функция... Создается Bitmap и на нем рисуется то, что нужно.

Ответить

Номер ответа: 7
Автор ответа:
 KOKA



Вопросов: 14
Ответов: 27
 Профиль | | #7 Добавлено: 07.07.05 01:25
К сожалению, если сильно динамичная, быстро изменяющаяся графика - то метод с Bitmapoм не катит... Но если не нужно много перерисовывать или "перемещать" графику, то это лучший способ для ее отображения, чтобы она не стиралась (не нужно много писанины для перерисовки)!

Ответить

Номер ответа: 8
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #8
Добавлено: 07.07.05 10:06
Да, естественно. Bitmap - для вывода статичных картинок. Для отрисовки динамичной графики больше подойдет ее отрисовка по событию Paint.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам