Antworten

Thema: Delphi 5 problem-- Rechtecke

Nachricht

Klicke hier, um dich anzumelden

 

Du kannst aus dieser Liste ein Symbol für deine Nachricht auswählen.

Zusätzliche Einstellungen

  • Wenn du diese Option aktivierst, werden URLs automatisch mit BB-Code ergänzt. www.beispiel.de wird zu [URL]http://www.beispiel.de[/URL].

Thema bewerten

Wenn du möchtest, kannst du dieses Thema bewerten.

Übersicht (Neuester Beitrag zuerst)

  • 15.03.2006
    0Daniel0
    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
  • 11.03.2006
    Abakus
    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
  • 10.03.2006
    0Daniel0
    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
  • 10.03.2006
    Abakus
    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.
  • 10.03.2006
    Abakus
    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
  • 10.03.2006
    0Daniel0
    Kann mir wirklich keiner Helfen??
  • 05.03.2006
    0Daniel0
    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

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Ja
  • Beiträge bearbeiten: Ja
  •