Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Создание фигур Добавлено: 28.01.12 14:15  

Автор вопроса:  Grang
Доброе время суток. Программа при запуске должна рандомно создавать прямоугольники (или раскидывать существующие, но это я не знаю как это сделать). Участки кода, использующие координаты фигур работают (очевидно фигуры создаются), но прямоугольников не видно.
    Dim maspreg(0 To 5) As Microsoft.VisualBasic.PowerPacks.RectangleShape

    Public Function pregcoords() As System.Drawing.Point
        Dim coord As New System.Drawing.Point(250, Int(Rnd() * Me.Height))
        pregcoords = coord
    End Function

    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        For i = 0 To 5
            maspreg(i) = New Microsoft.VisualBasic.PowerPacks.RectangleShape
            maspreg(i).Location = pregcoords()
            maspreg(i).Visible = True
        Next
    End Sub

Как отобразить фигуры?

Ответить

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

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



Вопросов: 15
Ответов: 93
 Профиль | | #1 Добавлено: 30.01.12 09:32
Public Class Form1
    ;Dim X, Y, i As Integer
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ;Dim GraphicsFun As System.Drawing.Graphics
        GraphicsFun = Me.CreateGraphics
       
        ;Dim BrushColor1 As New SolidBrush(Color.Red)
        'GraphicsFun.FillRectangle(BrushColor1, 10, 10, 100, 100)
        For i = 1 To 100
            X = Rnd() * Me.Width
            Y = Rnd() * Me.Height
            GraphicsFun.DrawRectangle(Pens.Red, X, Y, 100, 100)
        Next
    End Sub
End Class

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 31.01.12 06:24
  1.     Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
  2.         For i = 0 To 5
  3.             maspreg(i) = New Microsoft.VisualBasic.PowerPacks.RectangleShape
  4.             ' Тут по-моему скобки лишние в конце
  5.             maspreg(i).Location = pregcoords()
  6.             maspreg(i).Visible = True
  7.             
  8.             Me.Controls.Add(maspreg(i))
  9.         Next


Может еще надо цвет задать, по дефолту он может быть прозрачным или равным цвету формы

Ответить

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



Вопросов: 1
Ответов: 3
 Профиль | | #3 Добавлено: 31.01.12 20:27
Cramper, почему-то тоже не работает. Можно ли будет потом получить координаты прямоугольников, построенных из drawing.graphics?
Artyom, цвет и способ заливки установил - не помогло. Me.controls.add я уже пробовал: "Невозможно преобразовать значение типа "Microsoft.VisualBasic.PowerPacks.RectangleShape" в "System.Windows.Forms.Control"."

Ответить

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



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #4 Добавлено: 01.02.12 04:09
Перетяни с тулбокса на форму этот Shape и посмотри какой код сгенерится

Ответить

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



Вопросов: 15
Ответов: 93
 Профиль | | #5 Добавлено: 01.02.12 08:14
С каким VB работаете? Мой код в VB 2010 (VS 2010). Координаты прямоугольников потом получить прямо не получится. Это чисто рисунок на форме.

Ответить

Номер ответа: 6
Автор ответа:
 Grang



Вопросов: 1
Ответов: 3
 Профиль | | #6 Добавлено: 02.02.12 18:32
Artyom, в vb почему-то просто при добавлении код не генерится (в отличие от vc++).
Cramper, тоже vb2010.

Ладно спасибо, подумаю чем заменить.

Ответить

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



Вопросов: 1
Ответов: 3
 Профиль | | #7 Добавлено: 02.02.12 20:12
Всё, нашёл где код, который автоматом создаётся. Попробую скопировать.

Ответить

Номер ответа: 8
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #8 Добавлено: 13.02.12 15:08
На сколько понимаю - рисовать нужно в событии Paint, потому как после загрузки идет отрисовка и все что ты намалевал стирается

Ответить

Номер ответа: 9
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #9 Добавлено: 13.02.12 16:24
Проверил на шарпе - все рисует
  1.  
  2.     public partial class Form1 : Form
  3.     {
  4.         int X, Y, i;
  5.         Random Rnd = new Random(2);
  6.         public Form1()
  7.         {
  8.             InitializeComponent();
  9.         }
  10.  
  11.         private void button1_Click(object sender, EventArgs e)
  12.         {
  13.             System.Drawing.Graphics GraphicsFun = this.CreateGraphics();
  14.             Pen pen = new Pen(Color.Aqua, 25);
  15.             for(int i = 1;i<=100;i++)
  16.             {
  17.                 X = Rnd.Next(1,2) * this.Width/2;
  18.                 Y = Rnd.Next(1, 2) * this.Height / 2;
  19.                 GraphicsFun.DrawRectangle(Pens.Red, X, Y, 100, 100);
  20.             }
  21.         }
  22.     }

Ответить

Номер ответа: 10
Автор ответа:
 SHDZ



ICQ: 209382104 

Вопросов: 39
Ответов: 244
 Профиль | | #10 Добавлено: 13.02.12 16:25
Проверял какие координаты генерит RND()
У меня без задания крайтих точек были заоблачные - т.е. он их рисовал за пределами формы, вот их и не видно

Ответить

Страница: 1 |

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



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