Login Register
Frontpage Code library Pastebin

Dotted/Dashed Line/Box

Author: Jare
Added: 9. huhtikuuta 2011 kello 21.59
Edited: 15. huhtikuuta 2011 kello 22.19
Category: Grafiikka

Description

Voit piirtää viivoja tai täyttämättömiä laatikoita, joiden reunat ovat joko katkoviivaa tai pisteitä.

Code

Select all
 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//Esimerkki
    SCREEN 400,400
    Repeat
        DashedBox(10,10,MouseX(),MouseY())
        DashedLine(10,10,MouseX(),MouseY())
        DottedBox(390,390,MouseX(),MouseY())
        DottedLine(390,390,MouseX(),MouseY())
        DrawScreen
    Forever

Function DottedLine(x1,y1, x2,y2, tiheys=-1)
    //Piirtää pisteytetyn viivan
    If tiheys=-1 Then tiheys=5 'SÄÄDÄ TIHEYDEN OLETUSARVO TÄHÄN 5:N TILALLE!

    iMax = Max(Abs(x1-x2),Abs(y1-y2))
    Dot x1,y1 'Ensimmäinen piste ja
    Dot x2,y2 'Päätepiste piirretään varmasti
    Repeat
        i#=i+tiheys
        If i<=iMax Then
            pros# = i/iMax
            x=x1+(x2-x1)*pros
            y=y1+(y2-y1)*pros
            Dot x,y
        End If
    Until i >= iMax
End Function

Function DottedBox(x1,y1, x2,y2, tiheys=-1)
    //Piirtää pisteytetyllä reunaviivalla olevan laatikon
    //Vaatii DottedLine()-funktion rinnalleen toimiakseen
    //(tiheyden oletusarvo on aina sama kuin DottedLine()-funktiossa)
    
    DottedLine(x1,y1,x1,y2,tiheys)
    DottedLine(x1,y1,x2,y1,tiheys)
    DottedLine(x2,y1,x2,y2,tiheys)
    DottedLine(x1,y2,x2,y2,tiheys)
End Function

Function DashedLine(x1,y1, x2,y2, tiheys=-1)
    //Piirtää katkoviivan
    If tiheys=-1 Then tiheys=20 'SÄÄDÄ TIHEYDEN OLETUSARVO TÄHÄN 20:N TILALLE!
    
    d=GetAngle(x1,y1, x2,y2)
    iMax = Max(Abs(x1-x2),Abs(y1-y2))
    xMax = Max(x1,x2) : xMin = Min(x1,x2)
    yMax = Max(y1,y2) : yMin = Min(y1,y2)
    i#=-tiheys
    Repeat
        i=i+tiheys
        If i<=iMax Then
            pros# = i/iMax
            x = x1+(x2-x1)*pros
            y = y1+(y2-y1)*pros
            xx = x+Cos(d)*tiheys/2
            xx = Min(Max(xx,xMin),xMax)
            yy = y-Sin(d)*tiheys/2
            yy = Min(Max(yy,yMin),yMax)
            Line x,y, xx,yy
        End If
    Until i>=iMax
End Function

Function DashedBox(x1,y1, x2,y2, tiheys=-1)
    //Piirtää katkoreunaviivalla olevan laatikon
    //Vaatii DashedLine()-funktion rinnalleen toimiakseen
    //(tiheyden oletusarvo on aina sama kuin DashedLine()-funktiossa)
    
    DashedLine(x1,y1,x1,y2,tiheys)
    DashedLine(x1,y1,x2,y1,tiheys)
    DashedLine(x2,y1,x2,y2,tiheys)
    DashedLine(x1,y2,x2,y2,tiheys)
End Function

Comments

No comments. You can be first!

Leave a comment

You must be logged in to comment.