Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Rectangle mit schleife (https://www.delphipraxis.net/64451-rectangle-mit-schleife.html)

netscanner 3. Mär 2006 19:41


Rectangle mit schleife
 
Hallo, ich hab wieder ein Problem:

Delphi-Quellcode:
with image1.canvas do
 begin
a := 80;
c := 160;
e := -1;
for f := 1 to 3 do
begin
e := e + 1;
a := a - (e*40);
c := c + (e*40);
b := a;
d := c;
image1.Canvas.Rectangle(a+90,b+90, c+90,d+90) ;


end;
end;
dieser code SOLLTE mir eigentlich 3 Quadrate mit versch. größen "malen"...
Macht er aber nicht - er zeichenet nur das letzte mit den werten a := -40 und c:= 280...
Woran liegts???

turboPASCAL 3. Mär 2006 19:48

Re: Rectangle mit schleife
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,... integer;
begin
  with image1.canvas do
  begin
    //  image1.Canvas.Brush.Style := bsClear; // <----<<<
    // da aber With Image1.Canvas vorangestellt ist reicht:
   
    Brush.Style := bsClear;

    a := 80;
    c := 160;
    e := -1;
    for f := 1 to 3 do
    begin
      e := e + 1;
      a := a - (e*40);
      c := c + (e*40);
      b := a;
      d := c;

      Rectangle(a+90,b+90, c+90,d+90) ;
    end;
  end;
end;
Rectangle zeichnet immer mit dem akt. Pen-Color den Ramen und mit dem Brush.Color wird es dann ausgefüllt.
Will man den innenbereich nicht ausfüllen setzt man den Style des Brusches auf bsClear

[oh]Brush.Style, Pen.Style, Rectangle[/oh]

netscanner 3. Mär 2006 19:50

Re: Rectangle mit schleife
 
und was sollte das bringen? geht trotzdem net...

turboPASCAL 3. Mär 2006 20:00

Re: Rectangle mit schleife
 
:wiejetzt: ...extra Delphi angeworfen, Bild !

[edit=tP]Bildchen gelöscht[/edit]

netscanner 3. Mär 2006 20:01

Re: Rectangle mit schleife
 
bei mir eben net!


EDIT: Elendiger Computer! Jetzt gehtz :wall:

turboPASCAL 3. Mär 2006 20:07

Re: Rectangle mit schleife
 
Wollt gerade fragen:

Hast vorher noch was gezeichnet und das Pen.Color und Brush.Color steht noch auf weiss ? ;)

netscanner 3. Mär 2006 20:24

Re: Rectangle mit schleife
 
so leute, die letzte frage für heute ^^

Delphi-Quellcode:
var a,b,c,d,e,f: integer;
begin

  with image1.canvas do
  begin

 Brush.Style := bsClear;

    a := 80;
    c := 160;
    e := -1;
    for f := 1 to 3 do
    begin
      e := e + 1;
      a := a - (e*40);
      c := c + (e*40);
      b := a;
      d := c;

      Rectangle(a+90,b+90, c+90,d+90) ;


      image1.Canvas.Polyline([Point(120+90, a+90), Point(c+90, 120+90), Point(120+90,c+90),
    Point(a+90,120+90),Point(120+90,a+90)]);
    end;
  end;
end;
das ist jetzt der endcode...es werden polygonne und quadrate inneinander erzeugt. die linien sind aber nicht 100% aufeinander...woran kann das liegen?

stoxx 3. Mär 2006 21:16

Re: Rectangle mit schleife
 
Zitat:

die linien sind aber nicht 100% aufeinander...woran kann das liegen?
wenn eine Linie von P1 zu P2 geht, dann gehört der letzte Punkt nicht mit zur Linie, bzw wird nicht gezeichnet.
Polygonlinien dann eventuell eins breiter zeichnen.

netscanner 3. Mär 2006 22:25

Re: Rectangle mit schleife
 
und schon wieder ne frage:

Delphi-Quellcode:
var
F: array[1..5] of tcolor;
i :integer ;
begin
  f[1] := clblue;
  f[2] := clred;
  f[3] := clblack;
  f[4] := clwhite;
  f[5] := clyellow;


  with Image1.Canvas do
  begin

  for i := 0 to 20 do begin
Randomize;
brush.color := f[Random(5)+1]; //diese Zeile muss wahrscheinlich anders sein...

Polygon([Point(0, 200), Point(200, 200),
    Point(100, i*15)]);


end;
end;

diesen code habe ich jetzt programmiert...es werden mehrere dreiecke inneinander erzeugt und das ganze ding wird dann mit einer zufallsfarbe gefüllt.
Wie mache ich es jetzt aber, dass nicht die ganze figur, sondern nur ein bestimmtes dreieck mit der zufallsfarbe gefüllt wird.
Auf deutsch: jedes Dreieck soll eine andere Farbe haben...

SirThornberry 4. Mär 2006 08:46

Re: Rectangle mit schleife
 
Eine Farbe besteht aus rot,grün und blau. Wenn du nur Graustufen willst würde das so aussehen eine Zufallsfarbe zu erzeugen. Desweiteren sollte man Randomize nur ein einziges mal im Programm aufrufen.
Delphi-Quellcode:
var LFarbwert: Byte;
begin
  Randomize;
  [...]
  LFarbwert := Random(256) - 1;
  brush.color := RGB(LFarbwert, LFarbwert, LFarbwert);
Da das ganze mit den Dreiecken aber eine neue Frage ist und die ursprüngliche Frage beantwortet ist mach ich hier mal zu. Neue Frage -> Neuer Thread
*** LOCKED ***


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 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