AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [Logik] Bild durch for Schleife auf Formular verteilen
Thema durchsuchen
Ansicht
Themen-Optionen

[Logik] Bild durch for Schleife auf Formular verteilen

Ein Thema von Vasco da Gama · begonnen am 28. Dez 2009 · letzter Beitrag vom 28. Dez 2009
Antwort Antwort
Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#1

[Logik] Bild durch for Schleife auf Formular verteilen

  Alt 28. Dez 2009, 13:21
Hi, ich hab mal wieder eine Logikfrage....
Ich komm einfach nicht auf die Lösung des Problems, also nun zu dem was ich will.

Ich möchte mit einem Bild ein Formular bedecken. Ich weiß nicht wie groß das Formular ist und ich will rechts und links am Rand immer 1 px frei haben, aber zwischen den Bildern keinen Abstand.
Ich versuche es nun mit For:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
begin
  // ...weiterer Code...
  SetLength(Terrain, ( (ClientWidth - 2 - ClientWidth mod 64) div 64) * ( (ClientHeight - 2 - ClientHeight mod 48) div 48));
  // Es sollen so viele Bilder erzeugt werden wie nötig, um das Formular zu bedecken UND jeweils 1 px links und rechts freizulassen
  for I := 0 to Length(Terrain) - 1 do
  begin
    with Terrain[I] do
    begin
      X := 1 + 64 * (I mod 64); // ein Bild ist 64 px breit
      Y := 1 + 48 * (I mod 48); // und 48 px hoch
      // oben ist der Versuch, die Bilder nun so aufzuteilen, dass das Formular bedeckt ist, klappt leider nicht ( Die Bilder sind in zwei diagonalen Reihen vorhanden ... )
      // Der Rest ist unwichtig für mein Problem
    end;
  end;
  // ...und noch mehr Code...
end;
So, ich habe leider keinhe Ahnung, was ich mit X und Y anstellen muss, damit die Bilder korrekt auf das Formular aufgeteilt werden.
Kann mir da jemand helfen?
Ich danke vielmals im Vorhinein allen, die versuchen mir zu helfen.

mfG
VdG
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#2

Re: [Logik] Bild durch for Schleife auf Formular verteilen

  Alt 28. Dez 2009, 13:26
Wenn du das ganze Feld zeichnen willst, dann mußt du in ZWEI verschachtelten Schleifen X UND Y durchgehn.

Du gehts nur X und Y gleichzeitig über I durch, was natürlich eine Diagonale ergibt.

hab mich verguckt

Code:
X := 1 + 64 * (I mod [b]16[/b]);
Y := 1 + 48 * (I div [b]16[/b]);
//                      ^^ die Anzahl der Spalten ... hier wirst du wohl eine
//                      Variable reinnehmen müssen, wenn die Größe veränderbar ist
also
Code:
X := 1 + 64 * (I mod ((ClientHeight - 2) div 48));
Y := 1 + 48 * (I div ((ClientHeight - 2) div 48));
macht dann
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  I, Z: Integer;
begin
  // ...weiterer Code...
  Z := (ClientWidth - 2) div 64;
  SetLength(Terrain, Z * ((ClientHeight - 2) div 48));
  for I := 0 to High(Terrain) do
  begin
    with Terrain[I] do
    begin
      X := 1 + 64 * (I mod Z);
      Y := 1 + 48 * (I div Z);
      // ...
    end;
  end;
  // ...und noch mehr Code...
end;
PS: warum hast du dein SetLength so umständlich berechnet?
DIV rundet doch eh ab
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
dmdjt

Registriert seit: 18. Jul 2009
37 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: [Logik] Bild durch for Schleife auf Formular verteilen

  Alt 28. Dez 2009, 13:36
... und für den Index von Terrain[] halt noch einen Zähler mitlaufen lassen

edit:
oder halt ein 2d-Array für die Bilder verwenden. Vereinfacht dann den Zugriff.
  Mit Zitat antworten Zitat
Vasco da Gama

Registriert seit: 2. Aug 2009
131 Beiträge
 
Delphi 2009 Professional
 
#4

Re: [Logik] Bild durch for Schleife auf Formular verteilen

  Alt 28. Dez 2009, 16:10
Vielen Dank euch beiden, da bin ich wohl wahnsinnig auf dem Schlauch gestanden.

Jetzt hab ichs mit einem 2D Array gemacht und es klappt wunderbar.

Nochmals Danke euch beiden

mfG und

VdG / Flo
Flo
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:52 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