0 registered members (),
18,561
guests, and 5
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Linie zeichnen
#412589
11/29/12 16:54
11/29/12 16:54
|
Joined: Feb 2006
Posts: 212 Germany
Icke
OP
Member
|
OP
Member
Joined: Feb 2006
Posts: 212
Germany
|
Hi da draussen, ich scheiter wieder mal an den einfachsten Dingen ich möchte eine linie zeichnen. der anfang soll soll mit dem linkklick gesetst werden das Ende mit rechtsklick. via draw_line scheint das recht einfach zu sein. laut Handbuch muss nur der COLOR-Wert mit NULL angegeben sein. Zitat: Ist NULL gegeben, wird keine Linie gezeichnet, die Position zum Start der nächsten Linie wird aber gesetzt. Und genau das möchte ich. Leider wird schon mit dem 1. Klick eine linie von 0,0 zur Mausposition gezeichnet. Hier mal mein Code:
function zeichnen() { while(1) { if(mouse_left == 1) {
pos_1_x = mouse_cursor.x ; pos_1_y = mouse_cursor.y; } if(mouse_right == 1) {
pos_2_x = mouse_cursor.x ; pos_2_y = mouse_cursor.y; } wait(1); } }
function draw_red_rect() { while(1) { draw_line(vector(pos_1_x,pos_1_y,0),NULL,100); // move to first corner draw_line(vector(pos_2_x,pos_2_y,0),vector(0,0,255),100); wait(1); } }
Egal mit welcher Taste ich dann weiterklicke es wird eine Linie nach der anderen gezeichnet und die vorhergegangen ist weg. Die Linie soll mir aber erhalten bleiben.
|
|
|
Re: Linie zeichnen
[Re: Ascalon]
#412595
11/29/12 17:58
11/29/12 17:58
|
Joined: Feb 2005
Posts: 3,687 Hessen, Germany
Tempelbauer
Expert
|
Expert
Joined: Feb 2005
Posts: 3,687
Hessen, Germany
|
Du musst dir schon merken, wo du Linien gezeichnet hast.  Mit draw_line gezeichnete Linien sind nur 1 Frame gültig (danach sind sie wieder weg). D.h. speichere dir (in einem Array z.B.) die Endpunkte der Linien und durchlaufe dieses Array in der while(1) mit draw_line - zusätzlich zu deinem jetzigen Code. Hinzufügen zum Array tust du immer einen End-Punkt wenn du klickst (die "aktuelle" Linie). Schaffst du 
|
|
|
Re: Linie zeichnen
[Re: Icke]
#412628
11/30/12 09:10
11/30/12 09:10
|
Joined: Feb 2006
Posts: 212 Germany
Icke
OP
Member
|
OP
Member
Joined: Feb 2006
Posts: 212
Germany
|
schuldigung sollte so sein
function linie_zeichnen() { while(1) { draw_line(vector(position[0],position[1],0),vector(farbe[0], farbe[1],farbe[2]),100); draw_text("Test!",position[0],position[1],vector(farbe[0],farbe[1], farbe[2])); wait(1); } }
es wird jetzt zwar eine Linie gezeichnet aber nur für eine sec.(kann auch weniger sein) diese sollte doch aber durch die Schleife bestehen bleiben. Ausserdem möchte ich das der Strich, wie z.B. in Paint, stehen bleibt um anschliessend etwas neues zeichnen zu können.
|
|
|
Re: Linie zeichnen
[Re: Icke]
#412629
11/30/12 09:44
11/30/12 09:44
|
Joined: Feb 2005
Posts: 3,687 Hessen, Germany
Tempelbauer
Expert
|
Expert
Joined: Feb 2005
Posts: 3,687
Hessen, Germany
|
du meinst sicher sowas hier, nur dass man mehrere linien zeichnen kann:
var start[2];
var end[2];
function drawline_sample_startup()
{
mouse_mode = 4;
int draw = 0;
while (1)
{
draw_line (start,vector(0,0,255),100);
draw_line (end,vector(0,0,255),100);
if (mouse_left == 1)
{
start[0] = mouse_pos.x;
start[1] = mouse_pos.y;
draw=1;
}
if (draw == 1)
{
end[0] = mouse_pos.x;
end[1] = mouse_pos.y;
if (mouse_right == 1)
{
draw=0;
}
}
wait (1);
}
}
dazu musst du den code leicht modifizieren: du erzeugst eine Liste vor Eintritt in die while. In der mouse_right==1 Verzweigung fügst du einen neuen Eintrag in die Liste ein (der die Start und Endpunkte der aktuellen Linie enthält). Und damit du die bisherigen Linien anzeigen kannst, muss du nur die Liste durchlaufen und mit draw_line die gespeicherten Positionen zeichnen.
|
|
|
|