Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
69 / 59 / 15
Регистрация: 22.10.2012
Сообщений: 314
1

Как нарисовать что-либо поверх расположенных на форме контролов?

15.08.2016, 16:56. Показов 2182. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
VB.NET
1
2
3
4
5
6
7
8
    Private Sub Main_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
 
        Dim g As Graphics = e.Graphics
 
        g.DrawLine(New Pen(Color.Red, 5),
                   200, 600, 600, 600)
 
    End Sub
такой вариант рисует, но если на этом месте появляется контрол, то он закрывает линию

необходимо чтобы было наоборот, чтобы контрол располагался под линией
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2016, 16:56
Ответы с готовыми решениями:

Как определить тип контролов расположенных на форме?
Задача: На форме располагаются различные контролы (текстовые поля, надписи, кнопки, гриды и т.д.)...

Как определить имена и типы свойств контролов, расположенных на форме ?
Как определить имена и типы(String, Boolean...) свойств контролов, расположенных на форме. Заранее...

Как нарисовать что-либо на рабочем столе
И снова приветсвую всех, у меня родилась эта идея вспонтанно, но очень заинтерисовала, ибо не так...

8600GT, когда я захожу в какую либо игру у меня поверх картинки появляются много кубиков расположенных в шахмотном порядке
ЛЮДИ ПОМОГИТЕ ПОЖАЛУЙСТА!!! У меня такая проблема, когда я захожу в какую либо игру у меня поверх...

7
69 / 59 / 15
Регистрация: 22.10.2012
Сообщений: 314
18.08.2016, 11:15  [ТС] 2
вопрос актуален
0
Заблокирован
18.08.2016, 11:44 3
Цитата Сообщение от kritjara Посмотреть сообщение
чтобы контрол располагался под линией
рисовать надо на самом контроле.
Для этого нужны кропотливые пересчеты координат - оно вам надо?
0
Заблокирован
18.08.2016, 12:46 4
Например так -
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Public Class Form1
  Dim x1, y1, x2, y2 As Integer
  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    x1 = 30 : y1 = 10 : x2 = 600 : y2 = 600
  End Sub
  Private Sub Main_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
    Dim g As Graphics = e.Graphics
    g.DrawLine(New Pen(Color.Red, 5), x1, y1, x2, y2)
  End Sub
  Private Sub Button1_Paint(sender As Object, e As PaintEventArgs) Handles Button1.Paint
    Dim g As Graphics = e.Graphics
    g.DrawLine(New Pen(Color.Red, 5), x1 - Button1.Left, y1 - Button1.Top, x2 - Button1.Left, y2 - Button1.Top)
  End Sub
End Class
Изображения
 
4
1530 / 1478 / 322
Регистрация: 03.10.2012
Сообщений: 1,517
18.08.2016, 13:22 5
Как вариант можно использовать ShapeContainer и рисовать на нем. Он полностью прозрачный
VB.NET
1
2
3
4
5
6
7
8
9
10
11
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim b As New Button With {.Location = New Point(100, 100)}
        Me.Controls.Add(b)
        ShapeContainer1.BringToFront()
    End Sub
 
    Private Sub ShapeContainer1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles ShapeContainer1.Paint
        Dim f As New Font(FontFamily.GenericSerif, 24)
        e.Graphics.DrawString("qwerty", f, Brushes.Red, New Point(100, 100))
        ShapeContainer1.Invalidate()
    End Sub
Миниатюры
Как нарисовать что-либо поверх расположенных на форме контролов?  
4
69 / 59 / 15
Регистрация: 22.10.2012
Сообщений: 314
18.08.2016, 17:21  [ТС] 6
думаю вариант с шейпконтейнером подойдет, вот только у меня такого элемента на панели контролов нет
где его достать?
0
1530 / 1478 / 322
Регистрация: 03.10.2012
Сообщений: 1,517
18.08.2016, 17:41 7
Цитата Сообщение от kritjara Посмотреть сообщение
у меня такого элемента на панели контролов нет
Добавляете LineShape, например и ShapeContainer1 установится автоматически.
Миниатюры
Как нарисовать что-либо поверх расположенных на форме контролов?  
4
69 / 69 / 10
Регистрация: 15.08.2012
Сообщений: 71
18.08.2016, 22:01 8
нашел контрол. подправил убрав "лишнее". может и лишку убрал, но работает.
после добавления - задать размеры, вытащить поверх всех других контролов (естественно, после того, как они все добавятся) рисовать в "OnPaint".
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Public Class TransparentPane
 Inherits System.Windows.Forms.Control
 
 Public Sub New()
 End Sub
 
 Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
  Dim g As Graphics = e.Graphics
  g.DrawLine(Pens.Blue, 0, 0, Me.Width, Me.Height)
  g.Dispose()
 End Sub
 
#Region "Do not edit"
 Protected Sub InvalidateEx()
  If Me.Parent Is Nothing Then Return
  Dim dirtyRect As Rectangle = New Rectangle(Me.Location, Me.Size)
  Me.Parent.Invalidate(dirtyRect, True)
 End Sub
 Protected Overrides ReadOnly Property CreateParams() As CreateParams
  Get
   Dim cp As CreateParams = MyBase.CreateParams
   cp.ExStyle = cp.ExStyle Or &H20&
   Return cp
  End Get
 End Property
 Protected Overrides Sub InitLayout()
  MyBase.InitLayout()
  AddHandler Me.Parent.Paint, AddressOf Parent_Paint
 End Sub
 Private Sub Parent_Paint(ByVal sender As Object, ByVal e As PaintEventArgs)
  Me.Invalidate()
  RemoveHandler Me.Parent.Paint, AddressOf Parent_Paint
 End Sub
 Protected Overrides Sub OnPaintBackground(ByVal pevent As PaintEventArgs)
 End Sub
#End Region '"Do not edit"
End Class
0
18.08.2016, 22:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.08.2016, 22:01
Помогаю со студенческими работами здесь

Нарисовать линию не на форме, а поверх контрола!!!
Мужики!!! Как нарисовать линию поверх любого контрола?

Как построить график какой либо функции без доп. контролов?
кто-нибудь подскажите как построить график какой либо функции без доп. контролов?

Как поставить какой-либо объект поверх другого?
вопрос Н1 есть ли аналоги действия refresh такие, чтобы экран не мерцал(при движении строки) ...

При потсроении пишет что конструктор либо недоступен либо объявлен как explicit
/*Все обьекты содержимые в контейнерах без проблем выводятся через потоковые итераторы и алгоритм...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru