Thema: Delphi 5 problem-- Rechtecke
Klicke hier, um dich anzumelden
Du kannst aus dieser Liste ein Symbol für deine Nachricht auswählen.
Wenn du diese Option aktivierst, werden URLs automatisch mit BB-Code ergänzt. www.beispiel.de wird zu [URL]http://www.beispiel.de[/URL].
Wenn du möchtest, kannst du dieses Thema bewerten.
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
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
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
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
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.
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
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;
rectangle(20, penpos.y, imbild.width-40, penpos.y +20); i = (imbild.width-40) / 20;
While penpos.y < imbild.heigth-40 do begin <-- da das gleiche wie oben -20
Kann mir wirklich keiner Helfen??
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: 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
Foren-Regeln