Autor Beitrag
Chryzler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: So 13.05.07 17:33 
user profile iconSummerjam hat folgendes geschrieben:
in dem programm soll sämtliche dateien wie bei paint vorhanden sein.. also man muss frei zeichen könne, rechtecke, linien und kriese zeichen, farbe ausswaählen und gefüllt nicht gefüllt flächen haben..mir fehlt jetzt die das frei zeichen.. udn das wenn er die linine zieht das die dann garu werden.. und nein ich ahbe es net geschreiben..hat ein freudngeschrieben der auch hier im forum ist aber jetzt im urlaub

Frei zeichnen ist eigentlich ganz einfach:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TPaint.FormMouseDown(Sender: TObject; Button: TMouseButton;   
Shift: TShiftState; X, Y: Integer);   
begin   
  Canvas.MoveTo(X, Y);   
end;   

procedure TPaint.FormMouseMove(Sender: TObject; Shift: TShiftState; X,   
Y: Integer);   
begin   
  if ssLeft in Shift then  // wenn linke Maustaste gedrückt ist
    Canvas.LineTo(X, Y);
end;

Sollte funktionieren.

user profile iconSummerjam hat folgendes geschrieben:
und nein ich ahbe es net geschreiben..hat ein freudngeschrieben der auch hier im forum ist aber jetzt im urlaub

user profile iconChryzler hat folgendes geschrieben:
Graphex ist ein Beispielprogramm von Borland (BDS\3.0\Demos\DelphiWin32\VCLWin32\Doc\Graphex
:roll:
Summerjam
Hält's aus hier
Beiträge: 11



BeitragVerfasst: So 13.05.07 17:42 
Titel: .
ja udn deswegen kriegt der noch mal bescheid...

ähmm.ja weiß jemadn den noch wie das mit dem grau geht während des zeichnens

Moderiert von user profile iconUGrohne: Beleidigung entfernt und Beiträge zusammengefasst.
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: So 13.05.07 19:17 
Schaust du mal, was Chryzler gepostet hat? :roll:
Außerdem: Hat dein "Frei zeichnen" was mit "die Linie ziehen" zu tun? Ich habe immer noch nicht verstanden, was genau erreicht werden soll.

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
Summerjam
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mo 14.05.07 08:13 
Titel: .
nein das freizeichen hat nichts mit dem linien ziehen zu tun. Wenn man ein rechteck zieht oder eine linie oder eine Ellipse soll es beim zeichen grau gekenntzeichnet sein und wenn man nicht mehr auf die maus drückt in der gewünschten Frabe erscheinen.
Chryzler Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1097
Erhaltene Danke: 2



BeitragVerfasst: Mo 14.05.07 14:39 
Titel: Re: .
user profile iconSummerjam hat folgendes geschrieben:
nein das freizeichen hat nichts mit dem linien ziehen zu tun. Wenn man ein rechteck zieht oder eine linie oder eine Ellipse soll es beim zeichen grau gekenntzeichnet sein und wenn man nicht mehr auf die maus drückt in der gewünschten Frabe erscheinen.

Achso.
Nun, da bleibt dir nichts anderes übrig, als wenn die Maustaste wieder losgelassen wird, das Rechteck oder die Linie nocheinmal mit schwarz drübermalen.
Also sobald die Maustaste gedrückt wird musst du die Farbe auf Grau setzen und eben das Rechteck zeichnen. Wenn die Maustaste losgelassen wird, musst du nochmal das selbe Rechteck zeichnen, diesmal jedoch mit Schwarz. D.h. du musst dir die X- und Y-Koordinaten intern merken (hast du ja glaub ich bereits in xstart und ystart).
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Mo 14.05.07 15:14 
user profile iconChryzler hat folgendes geschrieben:
[
Nun, da bleibt dir nichts anderes übrig, als wenn die Maustaste wieder losgelassen wird, das Rechteck oder die Linie nocheinmal mit schwarz drübermalen.
Also sobald die Maustaste gedrückt wird musst du die Farbe auf Grau setzen und eben das Rechteck zeichnen. Wenn die Maustaste losgelassen wird, musst du nochmal das selbe Rechteck zeichnen, diesmal jedoch mit Schwarz. D.h. du musst dir die X- und Y-Koordinaten intern merken (hast du ja glaub ich bereits in xstart und ystart).

Grundsätzlich richtig. Aber:
Was ist, wenn man das Rechteck erst zu groß wählt und die Maus dann wieder quasi zurück bewegt?
Ich selber weiß nicht wirklich, wie man so etwas umsetzt.

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
ZeitGeist87
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1593
Erhaltene Danke: 20

Win95-Win10
Delphi 10 Seattle, Rad Studio 2007, Delphi 7 Prof., C++, WSH, Turbo Pascal, PHP, Delphi X2
BeitragVerfasst: Mo 14.05.07 15:38 
also is ganz einfach:

2 Privat-Variablen deklarieren:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
private
 myRect: TRect;
 Farbe: TColor;
public
 ...


Über den Farbeauswahldialog, weißt du einfach über Farbe:= Farbbox.color die gewünschte Farbe zu.

Im OnMouseDown-Ereignis setzt du über Image.Pen.Color:= clSilver die Farbe deines Zeichenstiftes auf Silber/Grau.

Am Schluss in der OnMouseMove-Prozedure deklarierst du folgendes:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
myRect.Topleft.x:= TopLeft.x;
myRect.Topleft.y:= TopLeft.y;
myRect.BottomRight.x:= BottomRight.x;
myRect.BottomRight.y:= BottomRight.y;


Dann gibts da ne Drawing-Prozedure

Da baust du einen Case auf drawingtool ein:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
 //Farbe zuweisen, in der gezeichnet werden soll
 Image.Canvas.Pen.Color:= Farbe;

 //Case
 case drawingtool of
  dtRectangle: Image.Canvas.Rectangle(myRect);
  dtEllipse: Image.Canvas.Ellipse(myRect);
  dtRoundedRect: Image.Canvas.RoundedRect(x1, y1, x2, y2, x3, y3); //Schau da in der Hilfe nach
 end//of case


LG
Stefan

PS Das eine *reck*ack hab ich gelesen

_________________
Wer Provokationen, Ironie, Sarkasmus oder Zynismus herauslesen kann soll sie ignorieren um den Inhalt meiner Beiträge ungetrübt erfassen zu können.