Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Virtual Panel Добавлено: 20.09.08 21:34  

Автор вопроса:  Mitirus
Делаю прогу со сложной графикой и анимацией. Раз есть анимация, значит надо двигать контролы. В принцыпе с этим проблем нет, когда передвинуть надо одну или две кнопки, а если их 10? или 20? Получается слишком много кода. Решение есть - Panel, однако здесь появляется другая проблема - Panel с BackColor=Transparent оооооочень тормозит при перерисовке сложной анимации. Я подумал, что надо бы сделать панель без прорисовки - "виртуальную". Моей больной фантазии хватило только на это:

Public Class VirtualPanel
    Private Structure psc
        Dim Control As Control
        Dim DefaultLocation As Point

        Public Sub New(ByVal Control As Control, ByVal Loc As Point)
            Control = Control
            DefaultLocation = Loc
        End Sub
    End Structure

    Dim Controls As ArrayList = New ArrayList
    Dim vis, en As Boolean

    Public Property Visible() As Boolean
        Get
            Return vis
        End Get
        Set(ByVal value As Boolean)
            If vis And Not value Then
                vis = value
                Hide()
            ElseIf Not vis And value Then
                vis = value
                Show()
            End If
        End Set
    End Property

    Public Sub AddControl(ByRef c As Control, ByVal DefLoc As Point)
        Controls.Add(New psc(c, DefLoc))
    End Sub

    Public Sub Move(ByVal x As Integer, ByVal y As Integer)
        For Each c As psc In Controls
            With c.Control
                .Left += x
                .Top += y
            End With
        Next
    End Sub
    Public Sub Hide()
        For Each c As psc In Controls
            With c.Control
                .Visible = False
            End With
        Next
        vis = False
    End Sub
    Public Sub Show()
        For Each c As psc In Controls
            With c.Control
                .Visible = True
            End With
        Next
        vis = True
    End Sub
End Class


Однако VS ругается, типа ссылка на объект не установлена. Так вот, хочется узнать: может зря я парюсь? может это уже предусмотрено стандартными методами (ведь все знать не реально, вот я все и не знаю)? И если нет, то как правильно воплатить идею в жизнь, как правильно добавить ссылку контрол в массив, чтобы потом на него можно было сослаться?

Ответить

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

Номер ответа: 1
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #1
Добавлено: 20.09.08 22:03
бедный компилятор, если бы осознал всю суть убился ап стену
Control = Control :
  1.  
  2. Public Sub New(ByVal ctrl As Control, ByVal Loc As Point)
  3.             Control = ctrl
  4.             DefaultLocation = Loc
  5.         End Sub

Ответить

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



Вопросов: 2
Ответов: 2
 Профиль | | #2 Добавлено: 20.09.08 22:26
Блин, на такой тупости...

Да, там еще

Dim Control As Control
на
Dim Cсс As Control
заменить надо...

Ответить

Страница: 1 |

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



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