Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Вопросы по gdi+, часть первая Добавлено: 05.01.07 16:50  

Автор вопроса:  -АлександР- | Web-сайт: sham.clan.su
Есть код:
    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)

        MyBase.OnPaint(e)

        e.Graphics.DrawLine(Pens.AliceBlue, 0, 0, 100, 100)

    End Sub

Вопрос 1) что такое баз. класс MyBase или можно ли переопределить процедуру OnPaint для определенного контрола.
2) где присваиватся значение переменной e

Заранее спасибо!

Ответить

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

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #1 Добавлено: 05.01.07 17:07
1) MyBase - это базовый класс. Если это все написанов коде формы, то MyBase - это базовый класс Form, если в коде контрола, то UserControl.

Можно переопределить OnPaint для определенного контрола, в этом случае нужно от него унаследоваться.

2) В коде, который выполняет вызов процедуры OnPaint.
Посмотрев содержимое стека, можно это увидеть:

> WindowsApplication12.exe!WindowsApplication12.Form1.OnPaint(System.Windows.Forms.PaintEventArgs e = {...}) Line 5 Basic
  System.Windows.Forms.dll!System.Windows.Forms.Control.PaintWithErrorHandling(System.Windows.Forms.PaintEventArgs e = {ClipRectangle = {X=0,Y=0,Width=292,Height=273}}, short layer, bool disposeEventArgs = false) + 0x5b bytes
  System.Windows.Forms.dll!System.Windows.Forms.Control.WmPaint(ref System.Windows.Forms.Message m) + 0x480 bytes
  System.Windows.Forms.dll!System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m) + 0x2e7 bytes
  System.Windows.Forms.dll!System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m) + 0x45 bytes
  System.Windows.Forms.dll!System.Windows.Forms.ContainerControl.WndProc(ref System.Windows.Forms.Message m) + 0x13 bytes
  System.Windows.Forms.dll!System.Windows.Forms.Form.WndProc(ref System.Windows.Forms.Message m) + 0x2b6 bytes
  System.Windows.Forms.dll!System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m) + 0xd bytes
  System.Windows.Forms.dll!System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m) + 0xd6 bytes
  System.Windows.Forms.dll!System.Windows.Forms.NativeWindow.DebuggableCallback(System.IntPtr hWnd, int msg = 15, System.IntPtr wparam, System.IntPtr lparam) + 0x75 bytes
[Native Code]

Судя по всему создание переменой e происходит вот здесь:

System.Windows.Forms.dll!System.Windows.Forms.Control.WmPaint(ref System.Windows.Forms.Message m) + 0x480 bytes

А какое вобщем-то это имеет значение?

Ответить

Номер ответа: 2
Автор ответа:
 -АлександР-



Вопросов: 55
Ответов: 1008
 Web-сайт: sham.clan.su
 Профиль | | #2
Добавлено: 05.01.07 17:33
если в коде контрола, то UserControl.
Спасибо, Brand

Но как мне залесть в код контрола, например PictureBoxа?

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 05.01.07 18:06
Во первых.. MyBase никакого отношения к GDI не имеет, это основы ООП (о чем я говорил ранее).
Во вторых.. MyBase - это ссылка на родителя, т.е. на экземпляр того класса от которого ты наследуешься, а MyClass или Me это ссылка на твой собственный(производный или другими слова наследованный) класс..
В третьих.. В код контрола ты не залезишь! Ты получишь лишь доступ к той части функциональности, которую определил программист создавший его. Это обуславливается различными зонами видимости перемнных и модификаторов доступа внутри самого контрола
В четвертых.. имхо.. не с того ты начал.. займись основами ООП, чтобы понять что означает и чем едят такие понятия инкапсуляция, наследование,зона видимости, модификаторы доступа и т.д...

Ответить

Номер ответа: 4
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 05.01.07 18:16
Но как мне залесть в код контрола, например PictureBoxа?

Class MyPictureBox
    Inherits PictureBox
End Class

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 05.01.07 18:23
В пятых.. Вряд ли когда либо тебе понадобится изменять вручную содержимое переменное е, а если и понадобится, то к тому времени ты уже поймешь как это сделать.. За свою небольшую практику на НЕТ лично у меня ни разу не возникала подобная ситуация..
В шестых.. На будущее,огромная просьба.. прежде чем задать вопрос, опиши ситуацию в отношении которой возник тот или иной вопрос. Как правило, в подавляющем кбольшинстве случаев, вопросы возникают из за неверного подхода к решению проблемы..

Ответить

Страница: 1 |

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



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