AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

probleme bei zeichenprogramm!!

Ein Thema von malzeit · begonnen am 28. Feb 2007 · letzter Beitrag vom 15. Mär 2007
Antwort Antwort
Seite 1 von 3  1 23      
malzeit

Registriert seit: 26. Feb 2007
14 Beiträge
 
#1

probleme bei zeichenprogramm!!

  Alt 28. Feb 2007, 16:55
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:
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.
[edit=Admin]Code in Delphi-Tags gesetzt. Künftig bitte selber machen. Mfg, Daniel[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: probleme bei zeichenprogramm!!

  Alt 28. Feb 2007, 19:47
Moin,

dein Programm hat irgendwie überhaupt nicht funktioniert. Ich habe mal ein neues geschrieben, wo man mit der Maus einen Quader zeichnen kann.
Miniaturansicht angehängter Grafiken
quader_398.jpg  
Angehängte Dateien
Dateityp: zip quader_218.zip (6,8 KB, 17x aufgerufen)
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
malzeit

Registriert seit: 26. Feb 2007
14 Beiträge
 
#3

Re: probleme bei zeichenprogramm!!

  Alt 1. Mär 2007, 16:04
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?
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: probleme bei zeichenprogramm!!

  Alt 1. Mär 2007, 16:29
Hi,

ich habe jetzt den Code so abgeändert, dass der Quader erst gezeichnet wird, nachdem man auf dem Button klickt.
Angehängte Dateien
Dateityp: zip quader2_180.zip (7,5 KB, 22x aufgerufen)
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
malzeit

Registriert seit: 26. Feb 2007
14 Beiträge
 
#5

Re: probleme bei zeichenprogramm!!

  Alt 3. Mär 2007, 17:56
Danke schön du hast mir sehr weriter geholfen.
Wenn ich noch irgendein Problem habe melde ich mich noch einmal.

Nochmals vielen DANK
  Mit Zitat antworten Zitat
malzeit

Registriert seit: 26. Feb 2007
14 Beiträge
 
#6

Re: probleme bei zeichenprogramm!!

  Alt 7. Mär 2007, 17:32
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.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: probleme bei zeichenprogramm!!

  Alt 7. Mär 2007, 18:03
Zitat von malzeit:
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?
Der Parameter Shift muss ausgewertet werden:
Delphi-Quellcode:
  if ssLeft in Shift then
  begin
     // linke Maustaste ist gedrückt ...
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: probleme bei zeichenprogramm!!

  Alt 7. Mär 2007, 18:29
Hallo,

füge doch mal folgenden Code deinem Programm hinzu:

Delphi-Quellcode:
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;
Jetzt müsste es eigentlich funktionieren.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
malzeit

Registriert seit: 26. Feb 2007
14 Beiträge
 
#9

Re: probleme bei zeichenprogramm!!

  Alt 8. Mär 2007, 12:26
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!!
  Mit Zitat antworten Zitat
malzeit

Registriert seit: 26. Feb 2007
14 Beiträge
 
#10

Re: probleme bei zeichenprogramm!!

  Alt 8. Mär 2007, 13:30
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:
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);
und zwar wenn ich das "bsSolid"tausche bleibt der alte Quader stehen allerding erkennt man dann den neuen nur noch als schwarze Fläche
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz