Autor Beitrag
ultraz06
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Mi 28.01.09 18:53 
hi ^^
ich möchte gerne meine form1, wie bei moorhuhn wenn ich mit der maus nach rechts ziehe, erweitern.
also wie bei moorhuhn halt^^
das man nicht die ganze "map" sieht sondern erst mit der maus nach links und rehts navigieren muss.
ist das mit delphi überhaupt umsetzbar?

Moderiert von user profile iconNarses: Titel geändert.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 28.01.09 19:56 
Das musst du dann so programmieren. Den entsprechenden Hintergrundausschnitt anzeigen, alle Objekte mitbewegen, die du anzeigst, etc. ;-)

Und wenn die Maus weiter nach rechts oder links geht als eine bestimmte Grenze, dann verschieben z.B., dafür kannst du ja im Timer Mouse.GetCursorPos abfragen oder OnMouseMove verwenden, je nach Konzept. Wobei ersteres bei einem stetig bewegenden Hintergrund sinnvoller wäre.
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Mi 28.01.09 19:59 
versteh ich nicht so recht^^
mit der grenze usw
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 28.01.09 20:04 
Naja, du fragst die Mausposition ab und schaust dann, ob diese weiter rechts als bspw. rechter Rand minus 100 Pixel ist. Wenn ja, dann soll z.B. gescrollt werden.

Rechter Rand = FormX.Left + FormX.Width, Rechter Rand minus 100 Pixel = FormX.Left + FormX.Width - 100.
ausblenden Delphi-Quelltext
1:
2:
if Mouse.GetCursorPos.X > FormX.Left + FormX.Width - 100 then
  ...
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Mi 28.01.09 20:09 
ja
und wie kann ich auf die gescrollte form dann was drauf machen weil bei mir die form nur so groß wie der bildschirm geht.
also wenn ich dann rechts scrolle soll ja was neues erscheinen , aber wie kann ich das bearbeiten ?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 28.01.09 20:11 
Dein Hintergrund muss dann z.B. gekachelt werden. Du musst dann eben überlegen welcher Ausschnitt gerade angezeigt werden soll statt immer den ganzen Hintergrund bei (0,0) zu zeichnen.
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Mi 28.01.09 20:12 
ja aber dann ist das doch insgesamt nur die größe der form1 aber halt unterteil in sagmer mal 3 abschnitte
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Mi 28.01.09 20:16 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Zeichnen;
begin
Puffer.Canvas.Draw(0, 0, Hg);
if PatroneSichtbar then
  Puffer.Canvas.Draw(xAkt, yAkt, patrone);
  PaintBox1.Canvas.Draw(0, 0, Puffer);
  end;

wie kann ich dann den hintergrund so zeichnen lassen das die unterteilung geht?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 28.01.09 21:04 
Beispiel: wenn der Hintergrund um 100 Pixel nach links verschoben ist, dann muss links das Hintergrundbild ab 100 Pixel von dessen linker Kante gezeichnet werden und die ersten 100 Pixel müssen rechts hinter dem Ende gezeichnet werden.
(Wenn der selbe Hintergrund fortlaufend gezeichnet werden soll.)

Um bestimmte Rechtecke aus einem Bild in ein Rechteck eines anderen Bildes zu kopieren gibt es BitBlt.

Vielleicht solltest du dir das erst einmal auf einem Blatt Papier zeichnen was wann wo gezeichnet werden muss...
ultraz06 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 84



BeitragVerfasst: Mi 28.01.09 21:57 
das bild will ich als hintergrund nehmen beim schwarzen strich soll die teilung sein

Moderiert von user profile iconNarses: BMP -> JPG, bitte komprimierte Bildformate verwenden, wenn das Bild so groß ist!
Einloggen, um Attachments anzusehen!
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Fr 30.01.09 10:24 
Ahoi,

das mit dem "Strich als Trenner" kannst du gleich verwerfen.
Schau dir mal das originale Moorhuhn an.
Dort gibt es ein Spielfeld das ca 2x die Bildschirmbreite ausmacht.
D.h. du siehst immer nur einen Teil des Gesamtbildes.
Es gibt aber keine "harte" Trennkante, über die es "klack" nach rechts oder links wechselt.

Mach doch mal ein neues Projekt auf, in dem du mal das mit dem Hintergrund versuchst:

Dein Form1 ist 800x600px groß. Du lädst eine Hintergrundgrafik mit 1600x600px.
Per Maus od Tastatur bewegst du dich dann Pixelweise / 10-Pixelweise / xxx nach rechts od links.
Einfach mal ein wenig rumspielen...

_________________
Delphi: XE - OS: Windows 7 Professional x64