vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Re: "V" zeichnen 
Autor: LesPaul
Datum: 01.04.10 09:32

Hallo,

also... vielleicht bin ich wirklich zu dumm oder es gibt ein generelles Verständnisproblem?

Hier mal funktionsfähig mit Command1, Command2, Line1, Line2 und Text1

Private Sub GeneriereV(ByVal x1 As Double, ByVal y1 As Double, _
ByVal x2 As Double, ByVal y2 As Double, _
ByVal winkel As Double, _
ByRef xv As Double, ByRef yv As Double)

'Schneller Vorschlag
'funktioniert wenn x1 > x2 und y1 > y2
'oder wenn x1 < x2 and y1 < y2 (also nur in 2 Quadranten)

Const eps As Double = 0.0001
Const PI As Double = 3.14159265358979
'Länge bestimmen
Dim l As Double: l = Abs(x1 - x2) ^ 2 + Abs(y1 - y2) ^ 2
If l < eps Then xv = x1: yv = y1: Exit Sub
l = Sqr(l)

Dim winkel1 As Double: winkel1 = Asin(Abs(y2 - y1) / l)
If x1 > x2 And y1 >= y2 Then winkel1 = winkel1 + PI

'Endpunkt der zweiten Linie berechnen
'Winkel (wie üblich) im Bogenmass
yv = y1 + l * Sin(winkel + winkel1)
xv = x1 + l * Cos(winkel + winkel1)

'gegebene Linie zeichnen
'With Line1
' .x1 = x1: .y1 = y1: .x2 = x2: .y2 = y2
'End With

'berechnete Linie zeichnen
With Line2
.x1 = x1: .y1 = y1: .x2 = xv: .y2 = yv
End With

End Sub

Public Function Asin(ByVal x As Double) As Double
If x >= 1 Then Asin = Atn(1): Exit Function
If x <= -1 Then Asin = -Atn(1): Exit Function
Asin = Atn(x / Sqr(-x * x + 1))
End Function

Private Sub Command1_Click()

With Line1
.x1 = 4000
.y1 = 3000
.x2 = 1800
.y2 = 2800
End With

End Sub

Private Sub Command2_Click()

With Line1
.x2 = 4000
.y2 = 3000
.x1 = 1800
.y1 = 2800
End With

End Sub

Private Sub Form_Activate()

Command1.Value = True
Text1.SetFocus

End Sub

Private Sub Form_Load()

Me.Height = 6000
Me.Width = 8000

Command1.Caption = "X1 > X2, Y1 > Y2"
Command2.Caption = "X1 < X2, Y1 < Y2"

Line1.BorderWidth = 3
Line2.BorderWidth = 3
Line2.BorderColor = vbRed

End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)

If KeyAscii = 13 Then

Dim wink As Double
wink = val(Text1.Text)

GeneriereV Line1.x1, Line1.y1, Line1.x2, Line1.y2, wink, Line2.y2, Line2.x2

End If

End Sub

 
Hoffe es hilft.
Danke
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
"V" zeichnen1.582LesPaul30.03.10 15:54
Re: "V" zeichnen1.109Zardoz30.03.10 17:35
Re: "V" zeichnen1.150Manfred X30.03.10 18:06
Re: "V" zeichnen1.100LesPaul31.03.10 09:49
Re: "V" zeichnen1.087Manfred X31.03.10 10:17
Re: "V" zeichnen1.098LesPaul31.03.10 16:28
Re: "V" zeichnen1.096Manfred X31.03.10 17:34
Re: "V" zeichnen1.062LesPaul01.04.10 09:32
Re: "V" zeichnen1.026Manfred X01.04.10 09:59
Re: "V" zeichnen1.077LesPaul01.04.10 12:01
Re: "V" zeichnen1.020LesPaul01.04.10 12:02

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel