• Nie Znaleziono Wyników

Class1.vb Mamy zbudowan

N/A
N/A
Protected

Academic year: 2021

Share "Class1.vb Mamy zbudowan"

Copied!
5
0
0

Pełen tekst

(1)

Tematy: Procedura Rysuj - metoda klasy.

Fazy z lewej i prawej strony – przeciążanie procedury

Class1.vb

Mamy zbudowaną klasę Stopien_walu_parametry : Public Class Stopien_walu_parametry

Private _Srednica_stopnia As Single Private _Dlugosc_stopnia As Single Private _Faza As Single

Public Property Srednica_stopnia As Single Get

Return _Srednica_stopnia End Get

Set(ByVal value As Single) _Srednica_stopnia = value End Set

End Property

Public Property Dlugosc_stopnia As Single Get

Return _Dlugosc_stopnia End Get

Set(ByVal value As Single) _Dlugosc_stopnia = value End Set

End Property

Dodajemy właściwość (Property) Faza pozwalającą określić fazę.

Jeśli wybierzemy z menu Stopień wału z fazą – faza będzie miała stałą wartość umieszczoną w kodzie równą 8.

Public Property Faza() As Single Get

Return _Faza End Get

Set(ByVal value As Single) _Faza = value

End Set End Property

Umieszczamy procedurę (dwie procedury o tej samej nazwie) Rysuj (będzie metodą) w klasie.

Ponieważ stopień może mieć fazę lub być bez fazy - utworzymy dwie procedury Rysuj różniące się liczbą argumentów.

Taka sytuacja to przeciążenie procedury.

Public Sub Rysuj(ByVal pozycja_X As Single, ByVal pozycja_Y As Single, ByVal dlugosc As Single, ByVal srednica As Single)

'Stopień bez fazy

Dim objRys As System.Drawing.Graphics

Dim objPioroWal As New System.Drawing.Pen(Color.Red, 2) objRys = Form1.CreateGraphics

objRys.DrawRectangle(objPioroWal, pozycja_X, pozycja_Y, dlugosc, srednica) End Sub

Public Sub Rysuj(ByVal pozycja_X As Single, ByVal pozycja_Y As Single, ByVal dlugosc As Single, ByVal srednica As Single, ByVal faza As Single) 'Stopień z fazą.

'Faza DODATNIA rysowana PO LEWEJ, faza UJEMNA rysowana PO PRAWEJ.

Dim objRys As System.Drawing.Graphics

Dim objPioroWal As New System.Drawing.Pen(Color.Red, 2) Dim faza_rys As Single

objRys = Form1.CreateGraphics

If faza > 0 Then 'Faza DODATNIA rysowana PO LEWEJ.

' Rysowanie prostokata 1 – 2 – 3 – 4

objRys.DrawRectangle(objPioroWal, pozycja_X + faza, pozycja_Y, dlugosc - faza, _ srednica) ' Rysowanie linii pionowej 5 – 6

(2)

objRys.DrawLine(objPioroWal, pozycja_X, pozycja_Y + faza, _ pozycja_X, pozycja_Y + srednica - faza) ' Rysowanie linii pionowej 5 – 1

objRys.DrawLine(objPioroWal, pozycja_X, pozycja_Y + faza, pozycja_X + faza, _

pozycja_Y) ' Rysowanie linii ukośnej 6 – 4

objRys.DrawLine(objPioroWal, pozycja_X, pozycja_Y + srednica - faza, _ pozycja_X + faza, pozycja_Y + srednica) ElseIf faza < 0 Then 'Faza ujemna rysowana po prawej, patrz rys. 2

faza_rys = Math.Abs(faza)

' Rysowanie prostokata 1 - 2 - 3 - 4

objRys.DrawRectangle(objPioroWal, pozycja_X, pozycja_Y, dlugosc - faza_rys, srednica) ' Rysowanie linii 5 - 6

objRys.DrawLine(objPioroWal, pozycja_X + dlugosc, pozycja_Y + faza_rys, _ pozycja_X + dlugosc, pozycja_Y + srednica - faza_rys) ' Rysowanie linii 5 - 2

objRys.DrawLine(objPioroWal, pozycja_X + dlugosc, pozycja_Y + faza_rys, _ pozycja_X + dlugosc - faza_rys, pozycja_Y) ' Rysowanie linii 6 - 3

objRys.DrawLine(objPioroWal, pozycja_X + dlugosc, pozycja_Y + srednica - faza_rys, _ pozycja_X + dlugosc - faza_rys, pozycja_Y + srednica) End If

End Sub End Class

Form1.vb

Public Class Form1 Dim x1 As Single Dim y1 As Single

Dim objRys As System.Drawing.Graphics

Dim objPioroOs As New System.Drawing.Pen(Color.Green, 1) Dim objPioroWal As New System.Drawing.Pen(Color.Red, 2) Dim X_osi As Integer = 50

Dim Y_osi As Integer = 200 Dim x_pocz As Integer = X_osi Dim Liczba_stopni As Integer

''Dim wsk_pocz_walka As Stopien_walu_powiazania ''Dim wsk_kon_walka As Stopien_walu_powiazania Dim Kolekcja_stopni_walu As New Collection Dim mode As Integer

Dim faza As Single = 0

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load objRys = Me.CreateGraphics

mode = 0 End Sub

Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) _

Handles Me.MouseMove LabelKoordynaty.Text = "X=" & e.X & " Y=" & e.Y

End Sub

Private Sub Form1_MouseClick(sender As Object, e As MouseEventArgs) _

Handles Me.MouseClick Dim x_stopnia As Single

Dim y_stopnia As Single Dim szerokosc As Single Dim wysokosc As Single

Dim mojStopien As New Stopien_walu_parametry

''Dim mojStopien_powiazania As New Stopien_walu_powiazania objRys.DrawLine(objPioroOs, X_osi, Y_osi, 600, Y_osi) objRys.DrawLine(objPioroOs, X_osi, X_osi, X_osi, 350)

(3)

If mode = 10 Then x1 = e.X y1 = e.Y

x_stopnia = x_pocz y_stopnia = y1

szerokosc = x1 - x_pocz wysokosc = (Y_osi - y1) * 2 ' '' zakomentować

' ''objRys.DrawRectangle(objPioroWal, x_stopnia, y_stopnia, szerokosc, _ wysokosc) x_pocz = x_pocz + szerokosc

Liczba_stopni = Liczba_stopni + 1 mojStopien.Dlugosc_stopnia = szerokosc mojStopien.Srednica_stopnia = wysokosc mojStopien.Faza = faza

''If Liczba_stopni = 1 Then

'' mojStopien_powiazania.Stopien_walu_odziedziczony = mojStopien '' wsk_pocz_walka = mojStopien_powiazania

'' wsk_kon_walka = mojStopien_powiazania ''Else

'' mojStopien_powiazania.Stopien_walu_odziedziczony = mojStopien '' wsk_kon_walka.Adres_po = mojStopien_powiazania

'' wsk_kon_walka = mojStopien_powiazania ''End If

Kolekcja_stopni_walu.Add(mojStopien) If faza <> 0 Then

mojStopien.Rysuj(x_stopnia, y_stopnia, szerokosc, wysokosc, faza) Else

mojStopien.Rysuj(x_stopnia, y_stopnia, szerokosc, wysokosc) End If

End If End Sub

Private Sub PokażToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles PokażToolStripMenuItem.Click Call Narysuj()

End Sub

Private Sub SkasujToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles SkasujToolStripMenuItem.Click objRys.Clear(SystemColors.Control)

End Sub

Private Sub Narysuj()

Dim x_stopnia As Single Dim y_stopnia As Single Dim szerokosc As Single Dim wysokosc As Single

''Dim walek_tim As Stopien_walu_powiazania Dim wsk_kolekcji As Stopien_walu_parametry

objRys.DrawLine(objPioroOs, X_osi, Y_osi, 600, Y_osi) objRys.DrawLine(objPioroOs, X_osi, X_osi, X_osi, 350) x_pocz = X_osi

''walek_tim = wsk_pocz_walka ''For i = 1 To Liczba_stopni '' x_stopnia = x_pocz

'' y_stopnia = Y_osi - walek_tim.Stopien_walu_odziedziczony.Srednica_stopnia / 2 '' szerokosc = walek_tim.Stopien_walu_odziedziczony.Dlugosc_stopnia

(4)

'' wysokosc = walek_tim.Stopien_walu_odziedziczony.Srednica_stopnia

'' objRys.DrawRectangle(objPioroWal, x_stopnia, y_stopnia, szerokosc, wysokosc) '' x_pocz = x_pocz + szerokosc

'' walek_tim = walek_tim.Adres_po ''Next

For Each wsk_kolekcji In Kolekcja_stopni_walu x_stopnia = x_pocz

y_stopnia = Y_osi - wsk_kolekcji.Srednica_stopnia / 2 szerokosc = wsk_kolekcji.Dlugosc_stopnia

wysokosc = wsk_kolekcji.Srednica_stopnia ' '' zakomentować

' ''objRys.DrawRectangle(objPioroWal, x_stopnia, y_stopnia, szerokosc, _ wysokosc) If wsk_kolekcji.Faza <> 0 Then

wsk_kolekcji.Rysuj(x_stopnia, y_stopnia, szerokosc, wysokosc, wsk_kolekcji.Faza)

Else

wsk_kolekcji.Rysuj(x_stopnia, y_stopnia, szerokosc, wysokosc) End If

x_pocz = x_pocz + szerokosc Next

End Sub

Private Sub NowyWałekToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles NowyWałekToolStripMenuItem.Click mode = 10

x_pocz = X_osi

Kolekcja_stopni_walu.Clear() Liczba_stopni = 0

objRys.Clear(SystemColors.Control)

objRys.DrawLine(objPioroOs, X_osi, Y_osi, 600, Y_osi) objRys.DrawLine(objPioroOs, X_osi, X_osi, X_osi, 350) End Sub

Private Sub StopnieBezFazyToolStripMenuItem_Click(sender As Object, e As EventArgs)_

Handles StopnieBezFazyToolStripMenuItem.Click mode = 10

faza = 0 End Sub

Private Sub StopnieZFazaZLewejStronyToolStripMenuItem_Click(sender As Object, _ e As EventArgs) Handles StopnieZFazaZLewejStronyToolStripMenuItem.Click mode = 10

faza = 8 End Sub

Private Sub StopnieZFazaZPrawejStronyToolStripMenuItem_Click(sender As Object, _ e As EventArgs) Handles StopnieZFazaZPrawejStronyToolStripMenuItem.Click mode = 10

faza = -8 End Sub

Private Sub NicNieRóbToolStripMenuItem_Click(sender As Object, e As EventArgs) _ Handles NicNieRóbToolStripMenuItem.Click mode = 0

End Sub End Class

(5)

Rysunek 1

Rysunek 2

Cytaty

Powiązane dokumenty

Ilość celów szczegółowych jest wynikiem realizacji przydzielonych zadań w bazach właśnie przez czworo kolejnych zajęć. Stworzone warunki umożliwiają dzieciom ze

Jest też bardzo prawdopodobne, że odbywając według tradycji brygitań- skiej profesję i konsekrację jednocześnie, przynajmniej w niektórych wypadkach złamano

Wątpić należy wszak, by kult pątniczy ogniskował się od początku wokół obrazu Matki Boskiej Byszewskiej, adorowanego publicznie w manierystycznym kościele z

Poznaliście już różne techniki rysunkowe (rysunek ołówkiem , węglem, mazakami, kredkami, cienkopisami).. Stwórz postać, w której połączysz elementy

Lista jednokierunkowa będzie się nazywała Stopien_walu_powiazania , a kolekcja przechowująca stopnie wału Kolekcja_stopni_walu. Omówione zostaną oba sposoby, a ostatecznie

Diagram UML możemy wywołać klikając, w oknie Solution Explorer, prawym klawiszem myszy na pliku Class1.vb, rys. Wywołanie

Pojęcie błędnej reprezentacji odgrywa rolę nie tylko w opisywaniu, wyjaśnianiu i przewidywaniu zachowań pozornie irracjonalnych, lecz także w odniesieniu do (przynajmniej

Wiesz, odebrałaś mi także zaufanie, radość wiarę w dobro i w drugiego człowieka, no i Kamila...Piszę do Ciebie, bo czuję się okradziona z rzeczy, których już nigdy nie