Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Не могу справиться с графикой помогите Добавлено: 21.02.08 09:29  

Автор вопроса:  Али
Не могу справиться с задачей:
Надо начертить любое геометрическое объект по кускам, а именно применяя треугольники. Координаты вершин треугольника задаются заранее...

Ответить

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

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 21.02.08 12:11
любое геометрическое объект

А в чем проблема?

Ответить

Номер ответа: 2
Автор ответа:
 Георгич



Вопросов: 16
Ответов: 52
 Профиль | | #2 Добавлено: 21.02.08 21:38
  



Действительно только, остаётся гадать, что именно надо, вот тебе программка так сказать для общего развития, может быть, что то , найдешь полезное.

После запуска программы мы увидим многоугольник в виде звезды, если навести мышку на квадратик(вершины многоугольника), нажав левую кнопку мыши и потащить в сторону, то вид многоугольника измениться





Imports System.Math
Public Class Form1
    Inherits System.Windows.Forms.Form


" Код, автоматически созданный конструктором форм Windows "


 ' Переменная, устанавливающее состояние перемещения
    ' Если равно -1, то перемещать нельзя
    Private CheckState As Integer = -1

    ' Объявляем массив точек
    Private apts(9) As Point

    ' Размеры меток
    Private Const iSize As Integer = 6
    Private Const iCenter As Integer = iSize \ 2
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' Задаем вершины многоугольника
        apts(0).X = 80 : apts(0).Y = 20
        apts(1).X = 100 : apts(1).Y = 80
        apts(2).X = 160 : apts(2).Y = 80
        apts(3).X = 120 : apts(3).Y = 120
        apts(4).X = 140 : apts(4).Y = 180
        apts(5).X = 80 : apts(5).Y = 140
        apts(6).X = 20 : apts(6).Y = 180
        apts(7).X = 40 : apts(7).Y = 120
        apts(8).X = 5 : apts(8).Y = 80
        apts(9).X = 60 : apts(9).Y = 80
    End Sub
    Private Sub CreatePolygon(ByVal g As Graphics)
        ' Очистим формы от предыдущих линий
        g.Clear(BackColor)
        ' Рисуем многоугольник
        g.DrawPolygon(Pens.Red, apts)

        ' Рисуем метки, за которые можно ухватиться мышкой
        ;Dim rectangles() As Rectangle
        ReDim rectangles(apts.GetUpperBound(0))
        For i As Integer = 0 To apts.GetUpperBound(0)
            ' Определяем размеры меток и их центры
            With rectangles(i)
                .X = apts(i).X - iCenter
                .Y = apts(i).Y - iCenter
                .Width = iSize
                .Height = iSize
            End With
        Next i

        ' Заполняем метки белым цветом и обрамляем их черным цветом
        g.FillRectangles(Brushes.White, rectangles)
        g.DrawRectangles(Pens.Black, rectangles)
    End Sub
    Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
        CreatePolygon(e.Graphics)
    End Sub

    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
        ;Dim dx As Single
        ;Dim dy As Single

        For i As Integer = 0 To apts.GetUpperBound(0)
            If Abs(apts(i).X - e.X) < iCenter And _
               Abs(apts(i).Y - e.Y) < iCenter _
            Then
                ' Начинаем тащить
                CheckState = i
                Exit For
            End If
        Next i
    End Sub

    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
        ' Ничего не делаем, если нет перемещения
        If CheckState = -1 Then Exit Sub

        ' Перемещаем вершины
        apts(CheckState).X = e.X
        apts(CheckState).Y = e.Y

        ' Перерисовываем
        CreatePolygon(Me.CreateGraphics())
    End Sub

    Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
        CheckState = -1
    End Sub


End Class

Ответить

Номер ответа: 3
Автор ответа:
 Али



Вопросов: 2
Ответов: 2
 Профиль | | #3 Добавлено: 11.03.08 14:07
Проблема именно в том что, нужно создать трехмерный объект. А этот объект то нужно, заполнить в виде мозаики т.е. в виде отдельных кусков который состоит из треугольников. Каждый треугольник нужно заполнят с помощью PATHGRADIENTBRUSH. Я то создал уже треугольник и заполнил и имеется у меня уже считывание данных из файла и создается одномерный массив, хочу этот массив применить в создании трехмерного объекта. Может кто, поможет?

Ответить

Страница: 1 |

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



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