| Autor |
Beitrag |
ultraz06
      
Beiträge: 84
|
Verfasst: 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 Narses: Titel geändert.
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 84
|
Verfasst: Mi 28.01.09 19:59
versteh ich nicht so recht^^
mit der grenze usw
|
|
jaenicke
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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. Delphi-Quelltext 1: 2:
| if Mouse.GetCursorPos.X > FormX.Left + FormX.Width - 100 then ... |
|
|
ultraz06 
      
Beiträge: 84
|
Verfasst: 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
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 84
|
Verfasst: 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 
      
Beiträge: 84
|
Verfasst: Mi 28.01.09 20:16
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
      
Beiträge: 19346
Erhaltene Danke: 1754
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 
      
Beiträge: 84
|
Verfasst: Mi 28.01.09 21:57
das bild will ich als hintergrund nehmen beim schwarzen strich soll die teilung sein
Moderiert von Narses: BMP -> JPG, bitte komprimierte Bildformate verwenden, wenn das Bild so groß ist!
Einloggen, um Attachments anzusehen!
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: 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
|
|