Edit a 2D line...

Blitz3D Forums/Blitz3D Beginners Area/Edit a 2D line...

hollifd(Posted 2016) [#1]
Is it possible to select a 2D line and edit it's properties like start point, end point, length, color, etc? If so, how? Here is my sample code. I would appreciate any point in the right direction.

Thanks,
David

Graphics 1200,900,16 

Type MyLines
	Field SX#		;LINE START POINT X
	Field SY#		;LINE START POINT Y
	Field EX#		;LINE END POINT X
	Field EY#		;LINE END POINT Y
	Field LColor$	;LINE COLOR
	Field LName$	;LINE NAME
End Type

X = 200
Y = 200


fntArial=LoadFont("Calibri",10,False,False,False)
SetFont fntArial 



For I = 1 To 5
	gl.MyLines = New MyLines
	gl\LName$ = "Line_" + I
	gl\SX# = X
	gl\SY# = Y + I * 50
	gl\EX# = X + 400
	gl\EY# = Y + I * 50
	If I = 1 Or I = 3 Or I = 5 Then
		gl\LColor$ = "RED"
	Else
		gl\LColor$ = "White"
	End If
Next

; Wait for ESC to hit 
While Not KeyHit(1)
	SetBuffer BackBuffer()

	Cls
	For gl.MyLines = Each MyLines
		Select gl\LColor$
			Case "RED"
				Color 255,0,0
			Default
				Color 255,255,255
		End Select
		
	Oval gl\SX#, gl\SY# - 2, 4, 4, 1
	Line(gl\SX#, gl\SY#, gl\EX#, gl\EY#)
	Oval gl\EX#, gl\EY# - 2, 4, 4, 1
	Text gl\EX# + 10, gl\EY#-5, Abs(gl\SX# - gl\EX#)
	
	Color 255,255,0
	Line MouseX(), 0, MouseX(),GraphicsHeight()
	Line 0, MouseY(), GraphicsWidth(), MouseY()
	HidePointer
	
	Next
	Flip
Wend




RemiD(Posted 2016) [#2]
To define a point position you could detect when the cursor is over a point (in a certain range) by calculating if the cursor coordinates (X%,Y%) is inside an area coordinates around the point (between pointX%-3,pointY%-3 and pointX%+3,PointY%+3) and if yes, and if the user is holding the mousebutton, set the state of the point to "edit", and when in state "edit", the point would be positionned at the cursor position, and when the user releases the mousebutton, position the point at the cursor position and set the state of the point to "set". (also have a variable to make sure that the user can only edit only one point at a time)
To define the color of a line you could first select a line with the mouse wheel or by picking it (check if the mouse cursor is over a line after a mouseclick), and then ask the user which color he wants to use (with a string like "255,255,255" of by picking a color on a premade image that you would display.
To ask the user for the color with a string, you may want to use this : http://www.blitzbasic.com/codearcs/codearcs.php?code=3262

Good luck,


hollifd(Posted 2016) [#3]
Thanks for the good ideas. I'll give them a try.