![]() |
probleme bei zeichenprogramm!!
hallo ich muss in Into ein zeichenprogramm programieren habe jetzt allerdings das problem das ich nicht richtig weiter komme!
Ich habe bis jetzt ein einfaches Vieleck. Möchte jetzt ein Quader programieren und würde mich freuen wenn ihr mir helfen könntet. Hier mal mein Quelltext:
Delphi-Quellcode:
[edit=Admin]Code in Delphi-Tags gesetzt. Künftig bitte selber machen. ;-) Mfg, Daniel[/edit]
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TPunkt = Record xpos,ypos:integer end; TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Image1: TImage; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; Button2: TButton; Button1: TButton; procedure Image1Click(Sender: TObject); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Button2Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; geklickt:boolean=false; punkta,punktb:TPunkt; implementation {$R *.dfm} procedure TForm1.Image1Click(Sender: TObject); var ypos,xpos:integer; begin xpos:=mouse.CursorPos.X-image1.Left; ypos:=mouse.CursorPos.y-image1.Top-27; image1.Canvas.MoveTo(xpos,ypos); image1.Canvas.lineto(xpos+1,ypos); edit3.Text:=IntToStr(ypos); edit4.Text:=IntToStr(xpos); if not geklickt then begin punkta.xpos:=mouse.CursorPos.X-image1.Left; punkta.ypos:=mouse.CursorPos.y-image1.Top-27; geklickt:=true; edit5.Text:=IntToStr(punkta.xpos); edit6.Text:=IntToStr(punkta.ypos); end else begin punktb.xpos:=mouse.CursorPos.X-image1.Left; punktb.ypos:=mouse.CursorPos.y-image1.Top-27; geklickt:=false; edit7.text:=IntToStr(punktb.xpos); edit8.text:=IntTOStr(punktb.ypos); end; end; procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin edit1.Text:=IntToStr(mouse.CursorPos.X); edit2.Text:=IntToStr(mouse.CursorPos.y); end; procedure TForm1.Button2Click(Sender: TObject); begin if geklickt=false then image1.canvas.rectangle(punkta.xpos,punkta.ypos,punktb.xpos,punktb.ypos) end; procedure TForm1.Button1Click(Sender: TObject); begin if geklickt=false then image1.Picture.Bitmap.Canvas.r(punkta.xpos,punkta.ypos,punktb.xpos,punktb.ypos); end; end. |
Re: probleme bei zeichenprogramm!!
Liste der Anhänge anzeigen (Anzahl: 2)
Moin,
dein Programm hat irgendwie überhaupt nicht funktioniert. Ich habe mal ein neues geschrieben, wo man mit der Maus einen Quader zeichnen kann. |
Re: probleme bei zeichenprogramm!!
Danke schön ich habe es nit meinen zusammen gebracht und es funktioniert super.
Kann man das vielleicht so machen das es erst aktiviert wird wenn ich einen Button geclickt habe oder geht das nicht? |
Re: probleme bei zeichenprogramm!!
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich habe jetzt den Code so abgeändert, dass der Quader erst gezeichnet wird, nachdem man auf dem Button klickt. |
Re: probleme bei zeichenprogramm!!
Danke schön du hast mir sehr weriter geholfen.
Wenn ich noch irgendein Problem habe melde ich mich noch einmal. Nochmals vielen DANK |
Re: probleme bei zeichenprogramm!!
Hallo ich bins noch mal habe deine sachen verarbeitet und bin schon gut weiter gekommen. Habe auch ne Pyramide draus gebaut.
Allerdings möchte ich jetzt mit der maus einfach malen. Das Problem was ich habe besteht darin, dass wenn ich etwas gemalt habe und die maus loslasse um an einer anderen Stelle weiter zu machen zieht es immer einen Strich vom letzten Punkt bis zu meinen Neuen Punkt. Wie könnte ich das weg bekommen?
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Image1: TImage; Edit1: TEdit; Edit2: TEdit; procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } oldPos:TPoint; hoehe,breite:integer; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var a,b:integer; begin edit1.Text:=IntToStr(mouse.CursorPos.X); edit2.Text:=IntToStr(mouse.CursorPos.y); a:=StrToInt(edit1.Text); b:=StrToInt(edit2.Text); if ssLeft in Shift then begin image1.Canvas.Pen.Style:=graphics.pssolid; image1.Canvas.LineTo(x,y); end; end; procedure TForm1.FormCreate(Sender: TObject); begin Form1.DoubleBuffered:=true; image1.Canvas.Rectangle(0,0,image1.Width,image1.Height); image1.Canvas.Pen.Style:=graphics.psDot; image1.Canvas.Brush.Style:=bsClear; end; end. |
Re: probleme bei zeichenprogramm!!
Zitat:
Delphi-Quellcode:
if ssLeft in Shift then
begin // linke Maustaste ist gedrückt ... |
Re: probleme bei zeichenprogramm!!
Hallo,
füge doch mal folgenden Code deinem Programm hinzu:
Delphi-Quellcode:
Jetzt müsste es eigentlich funktionieren.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then begin image1.Canvas.Pen.Style:= pssolid; image1.Canvas.MoveTo(x, y); end; end; |
Re: probleme bei zeichenprogramm!!
bitsetter wenn ich deins eingebe passier garnichts.
Wenn ich die zeile shmia eingebe funktioniert es so wie ich das möchte. Trotzdem danke euch beiden!! |
Re: probleme bei zeichenprogramm!!
muss mich korigieren bitsetter deins geht doch!!
Hab aber noch ne frage wenn ich ein Quader mit deinem Programm zeichne sieht man diesen. Wenn ich jetzt nen neuen zeichne verschwindet der alte kann man das so machen das man trotzdem den alten noch sieht? ich denke es liegt an den folgenden Zeilen
Delphi-Quellcode:
und zwar wenn ich das "bsSolid"tausche bleibt der alte Quader stehen allerding erkennt man dann den neuen nur noch als schwarze Fläche
begin
if ssLeft in Shift then begin Image1.Canvas.Brush.Style:= bsSolid; Image1.Canvas.Pen.Style :=graphics.psSolid; Image1.Canvas.Rectangle(0,0,Image1.Width, image1.Height); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz