Avatar billede jobba Nybegynder
13. marts 2003 - 11:16 Der er 9 kommentarer og
1 løsning

Tegne en trekant?

Hej!

Hvordan får jeg tegnet en trekant på en form, som kan ændre farve ved run-time.
Jeg har kigget lidt på shape komponenten uden held.
Avatar billede joern Nybegynder
13. marts 2003 - 12:23 #1
Hej.

Jeg opfatter det med en farvet trekant som, at den er udfyldt med farve.
Det har jeg ikke syslet med, men jeg har engang lavet et program der kan beregne vinkler og sider i trekanter.
http://www.jkfsoft.dk/trekant.htm

Det er skrevet i VB3, men du kan få kildekoden, hvis det har interesse.
Hvis du downloader programmet kræves vbrun300.dll i din \system-mappe.  Den og threed.vbx kan hentes fra siden /visual.htm på mit domæne.

M.v.h.  Jørn
Avatar billede tjacob Juniormester
15. marts 2003 - 11:12 #2
Hvis det er en fyldt trekant, som Jørn siger, så er det ikke nogen simpel sag.
Det kan dog gøres med API, hvor der kan laves noget Fill med diverse Blt funktioner.

hvis du kunne nøjes med en trekant med farvet omrids er det rimelig simpelt:
Forudsat din form hedder Form1 (sæt Scalemode til pixels):

Sub TegnTrekant(ByVal lFarve As Long)

    Form1.Line (10, 10)-(110, 10), lFarve
    Form1.Line -Step(-50, 50), lFarve
    Form1.Line -Step(-50, -50), lFarve

End Sub

så kan du kalde den i f.eks. en knap:

Private Sub Command1_Click()

    TegnTrekant RGB(0, 0, 255)

End Sub

-Du kan så eksperimentere med forskellige DrawWidth og DrawMode i formen.

/tjacob
Avatar billede tjacob Juniormester
15. marts 2003 - 11:14 #3
Du kan naturligvis også inputte placering og størrelse, hvis du vil.
Avatar billede brobaek Nybegynder
15. marts 2003 - 13:09 #4
Du kan vel bare lave en løkke, som fylder ud med faldende højde.

For i = 1 to 1000 (bredde)
      for j = 1 to 1001 - i 'højde. Du kan bare ændre formlen, hvis hældning
                            'skal være anderledes
            'Indsæt her kode til at lave en prik i ønsket farve på kort i,j
      next j
Next i

Er det ikke bare så simpelt, eller ???

Mvh
Martin
Avatar billede brobaek Nybegynder
15. marts 2003 - 13:10 #5
('Indsæt her kode til at lave en prik i ønsket farve på _koord i,j) - stavefejl
Avatar billede tjacob Juniormester
15. marts 2003 - 14:45 #6
brobaek>>  Hvad hvis trekanten er skæv?  -eller drejet?
Avatar billede brobaek Nybegynder
15. marts 2003 - 16:04 #7
Private Sub Form_Load()
    Dim i As Integer, j As Integer
   
    For i = 100 To 2000 'Denne linje bestemmer bredden på kurven
        For j = 1 + (i / 2) To 1001 - (i / 4)
            Me.PSet (i, j), 6710886
        Next j
    Next i
   
End Sub

For j = 1 + (i / 2) To 1001 - (i / 4)
For j = "Bunden af trekanten" to "Toppen af trekanten".

Du kan selv definere funktioner - behøver ikke bruge bredde tælleren (i).
Avatar billede brobaek Nybegynder
15. marts 2003 - 16:09 #8
Brug evt. linjer istedet for punkter til at optimere hastigheden, som vist vha ascii nedenfor (linjerne kan evt. lægges på skrå). Så skal du bare lave en par for-løkker, som beregner start og slut punkt for linjerne.

-------
-----
  ---
  -
Avatar billede joern Nybegynder
18. marts 2003 - 16:58 #9
Hej.

Underligt at spørgeren ikke vender tilbage!

M.v.h.  Jørn
Avatar billede jobba Nybegynder
04. november 2003 - 09:50 #10
Hej! Jeg havde glemt at jeg havde spurgt, og min email notification var slået fra.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester