Delphi 5 problem-- Rechtecke
Hallo
Ich würde mich freuen wenn ihr mir helfen Könnt....
In der Procedure sind zwei sachen falsch. Eins weiß ich auch, es wird die Variable i in den zweiten teil nicht übernommen.
Und das andere problem was ich habe ist das er es nicht bis zum den angegeben punkt zeichent sonden viel früher aufhört.
(abstand zu den Ränden soll 20 Pixel betragen)
Hier der program Text:
Zitat:
Procedure TFrmTHeft.BtKar;
Var i,k,g : Integer;
Begin
With imBild.canvas do begin
i:=0
K:=20
while k < imbild.width-40 do begin
rectangle (k,penpos.y,k+20,penpos.y+20);
k:= k+20 {muss so groß wie kasten sein}
Moveto (k,penpos.y);
i:=i+1;
End;
Moveto (20,penpos.y+20)
While penpos.y < imbild.heigth-40 do begin
g:=0
repeat
Rectangle (penpos.x,penpos.y,penpos.x+20,penpos.y-20;
Moveto (penpos.x+20,penpos.y)
g:=g+1
Untill g=i
Moveto (20,penpos.y+20)
End;
End;
End;
Könnt ihr mir helfen?
MfG
AW: Delphi 5 problem-- Rechtecke
Kann mir wirklich keiner Helfen??:36_1_46:
AW: Delphi 5 problem-- Rechtecke
Also mir ist da einiges nicht ganz so klar:
Warum willst du da so viele Rechtecke zeichnen?
Code:
K:=20
while k < imbild.width-40 do begin <--- müsste es da übrigens nicht -20
heißen, da sonst der Abstand zum rechten
Rand 40 ist, da du mit k = 20
anfängst?
rectangle (k,penpos.y,k+20,penpos.y+20);
k:= k+20 {muss so groß wie kasten sein}
Moveto (k,penpos.y);
i:=i+1;
End;
du kannst doch auch für das gleiche schreiben:
Code:
rectangle(20, penpos.y, imbild.width-40, penpos.y +20);
i = (imbild.width-40) / 20;
Code:
While penpos.y < imbild.heigth-40 do begin <-- da das gleiche wie oben -20
Melde dich halt nochmal, wenn dir das nicht hilft :36_13_10:
AW: Delphi 5 problem-- Rechtecke
Mir ist jetzt vielleicht eingefallen, was du machen willst, ich kann es aber nur vermuten, weil ja ein beträchtlicher Teil deines Quellcodes fehlt.
Kann es sein, dass du ein kariertes Blatt zeichen willst? Das könntest du aber auf jeden Fall mit Linien besser und einfacher.
AW: Delphi 5 problem-- Rechtecke
das mit den -40 bei "imbild.width-40" kann ich ganz leicht erklären.
20 soll das letzte kästschen mindestens haben und dazu kommen nochmal 20 für die Kästchen breite bzw. höhe.
Ja mit linien ist es einfacher aber dann bring ihn mal bitte bei das er keine halben kästchen zeichent. aber wenn du eine IDEE hast dann kannst du es mir ja schreiben..
Das ist die ganze Procedure.... den rest habe ich in der schule und da komme ich nicht ihn habe praktikum...
MfG
AW: Delphi 5 problem-- Rechtecke
Erst mal muss ich sagen, dass mein Delphi ziemlich eingerostet ist, also wundere dich nicht, wenn was nicht stimmt, aber die Vorgehensweise stimmt.
Ich hoffe es hilft :)
Code:
const
randLinks = 20;
randOben = 20;
randRechts = 20;
randUnten = 20;
kaestchenbreite = 20;
kaestchenhoehe = 20;
Procedure TFrmTHeft.BtKar;
Var
i,
anzahlKaestchenX,
anzahlKaestchenY: Integer;
begin
// vertikale Linien
anzahlKaestchenX := trunc((imbild.width - randLinks - randRechts) / kaestchenBreite); //trunc, Kommaanteil abschneiden
for i := 0 to anzahlKaestchenX do
begin
MoveTo(i * kaestchenBreite, randOben);
LineTo(i * kaestchenBreite, imBild.height - randOben - randUnten);
end
//horizontale Linien
anzahlKaestchenY := trunc((imbild.height - randOben - randUnten) / kaestchenHoehe); //trunc, Kommaanteil abschneiden
for i := 0 to (imbild.height - randOben - randUnten) / kaestchenHoehe do
begin
MoveTo(i * kaestchenHoehe , randLinks);
LineTo(i * kaestchenBreite, imBild.width- randLinks - randRechts);
end
end
AW: Delphi 5 problem-- Rechtecke
hm.. für mich sieht das nicht so aus als ob das Delphi wäre... sowas habe ich noch nie gesehen..
aber ich werde das mal ausprobieren
MfG