Announcement

Collapse
No announcement yet.

Schnelles Panning und Stretchen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Schnelles Panning und Stretchen

    Hallo,

    in meiner Anwendung habe ich ein zugrundeliegendes Bitmap. Der Anwender hat dabei die Möglichkeit, sich in das Bild zu zoomen. Das heißt ich stretche nur einen kleinen Ausschnitt des Bildes auf den Bildschirm und der Rest wird einfach geclippt. Wenn der Benutzer die Grafik bewegt, so wird auch das Fenster verschoben und neue sog. Hotspots angelegt, usw. Das Problem bei der Sache ist, dass das alles sehr langsam geht, wenn mann das Bild stretchen muss. Hat jemand eine Möglichkeit wie das bei den professionellen Zeichenprogrammen geht, oder hat jemand eine Möglichkeit die ganze Sache etwas schneller zu machen.

    Herzlichen Dank,
    Martin

  • #2
    Hallo

    verwendest du die Delphi eigenen Befehle?

    wenn ja, dann soltest du es lieber mal mit bitblt / StretchBlt auseinandersetzen, (falls du nicht weist, wie du die Hilfe dazu bekommst, StretchBlt in den Quellcode schreiben, und F1 Drücken)

    cu Aik

    Comment


    • #3
      Hi

      Du kennst das Zoomverhältniss schon im Vorraus ? oder ?.
      Nun, sagen wir mal Du zoomst um den Faktor x100.
      Die Größe des fenster's ist bekannt und auch der bereich der gezoomt wird. Nun, rechne den Zoombereich auf die originale Bitmap runter, und zoome dann nur den effektiven 100'ten Teilausschnitt der Bitmap auf den 100x fachen Wert. Somit geschieht folgendes: anstatt die komplette Bitmap um den Faktor 100x zu zoomen und dann zu beschneiden(ca. 100 * 100 -1 Teilsegmente umsonst gezoomt), selektierst Du nur den endgültig gezoomten Bereich der Bitmap, also den ca. 100 * 100'teil der Bitmap. Dies bewirkt auch ein autom. Clipping/Beschneiden der Bitmap.

      Dazu kannst Du die Methode Canvas.StretchDraw(SourceRect, FensterRect, ..) nutzen.

      Gruß Hage

      Comment

      Working...
      X