Eingefügte Images verändern ihre Größe

Startseite Foren Deutsches LiveCode-Forum Eingefügte Images verändern ihre Größe

Ansicht von 8 Antwort-Themen
  • Autor
    Beiträge
    • #24730
      Alfredas
      Teilnehmer

      Hallo,

      nachdem ich in den letzen Jahren keine Zeit für das Programmieren hatte, will ich jetzt endlich ein Testprogramm meines Kartenspieles fertig machen.

      Doch mein Neueinstieg klappt nicht so richtig. Mein Ziel ist es im ersten Abschnitt, 33 Spielkarten als Bilder mit über 10 selbstgewählten Eigenschaften anzulegen.

      Mein Versuch die Karten mit Programmcode zu erstellen, hatte zur Folge ich irgendwann ein Compiler-Fehler bekamm, der zur Folge hatte dass, ich den Script nicht mehr einsehen oder bearbeiten konnte.

      Also alle Karten Manuell erstellen. Das habe ich zuerst über den Image-Button gemacht und dann Bilder eingefügt. Beim nächsten Start des Programm, wurden sie aber nicht mehr angezeigt, sondern es gab nur noch leere Rahmen.

      Also hier ins Forum geschaut und die PNG’s über das Menü als „New refernced Control“ einfügt. Denn wahrscheinlich werde ich die Bilder irgendwann ändern müssten. Alle Bilder mit einer Größe von 740 x ca. 300 auf 181 x 260 verkleinert.

      Beim aktuellen Aufruf wurden die Images in Orginal-Größe angezeigt.

      Wieso bleibt die eingestelle Größe nicht erhalten? Hat es mit dem Grafikformat PNG zu tun? Gehen PNG’s in Live-Code nicht? Oder muss ich die Bilder als „Import as Control“ einfügen, damit die Größe erhalten bleibt? Dann müsste ich bei jeder Änderung das Bild neu einfügen und auch alle Eigenschaften wieder neu anlegen. Das wäre echt mies.

      Ich habe die 9.6 Plus-Version, die auf Windows 10 läuft.

      Würde mich freuen, wenn mir jemand weiter helfen könnte.

      Viele Grüße
      Alfredas

    • #24732
      Klaus Major
      Verwalter

      Hallo Alfredas,

      das hat nichts mit dem Bildformat oder „imported/referenced“ zu tun!
      Der Trick ist, nachdem Du die Bilder in LC skaliert hast, im Inspector -> Size and position für die Bilder den Haken bei „lockloc“ („Lock size and position“) zu machen, sonst passiert das, was Du gerade erlebt hast.

      Idealerweise sollten die Bilder natürlich auch direkt die benötigte Größe haben.

      Aber Vorsicht!
      Bei „New referneced Control“ wird nur der Pfad des Bildes auf Deiner Festplatte gespeichert, auf anderen Rechnern fehlen dann wieder die Bilder.

      Also vielleicht besser die Bilder direkt importieren, dann sind sie im Stack!

      Falls es SEHR viele Bilder sind, sollten wir uns etwas anderes überlegen, aber das kriegen wir auch hin. 🙂

      Gruß

      Klaus

    • #24764
      Alfredas
      Teilnehmer

      Hallo Klaus,

      danke für deine Antwort.

      Das klappt jetzt gut. Schade nur, dass ich nur Position und Größe zusammen locken kann. Es würde mir im Moment besser passen, wenn ich nur die Größe festsetzen könnte.

      Da ich die Objekte wegen meiner neuen Eigenschaften kopiere und dann ein anderes Image zuordne, muss ich jedesmal die Bremse lösen und wieder neu ansetzen.

      Danke für deinen Hinweis bzgl. des Einfügens. Da ich die Bilder definitiv noch ändern muss, macht es mehr Sinn sie zu linken. Da ich sonst alle Eigenschaften neu setzen müsste. Und da ich noch nicht genau weis, in welcher Größe ich die Bilder später brauche, schadet es nicht wenn sie deutlich größer sind. In Moment dienen die Grafiken lediglich als Container und für die leichtere Eingabe der darauf angegebenen Daten in die Eigenschaften.

      Ich hätte das ganze auch nur mit Arrays machen können, aber so habe ich immer eine Abbildung der materiellen Karten dabei.

      Viele Grüße
      Alfredas

    • #24768
      Klaus Major
      Verwalter

      Hallo Alfredas,

      Das klappt jetzt gut. Schade nur, dass ich nur Position und Größe zusammen locken kann. Es würde mir im Moment besser passen, wenn ich nur die Größe festsetzen könnte.
      Da ich die Objekte wegen meiner neuen Eigenschaften kopiere und dann ein anderes Image zuordne, muss ich jedesmal die Bremse lösen und wieder neu ansetzen.

      tja, wie sagt der Rheinländer: Et is‘, wie et is‘! 🙂

      Da ich die Bilder definitiv noch ändern muss, macht es mehr Sinn sie zu linken.

      Ja, das ergibt Sinn. Man kann später immer noch einen Loop über alle Bilder laufen lassen und sie importieren, bevor Du eine Runtime von Deinem Stack erstellst.

      Gruß

      Klaus

    • #24784
      Torsten
      Teilnehmer

      Hallo Andreas,

      was Du beschreibst, ist ein meines Erachtens sehr lästiges Problem. Ich setze folgende Lösung ein: MouseEnter / MouseLeave – Handler setzen das LockLoc automatisch, so wie man es eigentlich erwartet, wenn man die Größe von Bildern verändert.
      Füge Du die folgenden Handler in das Cardscript der Karte deiner Wahl oder auch ins Stackscript ein.

      on mouseleave
         if first word of the name of the target is "image" then 
            set the lockloc of the target to true
         end if
      end mouseleave
      
      on mouseenter
         if first word of the name of the target is "image" then 
            set the lockloc of the target to false
            end if
      end mouseenter

      Happy Coding!
      Torsten

      Happy Coding
      Torsten

    • #24791
      Klaus Major
      Verwalter

      Sehr clever, Torsten! 🙂

    • #24829
      Torsten
      Teilnehmer

      Danke Meister, ich lerne von den Besten 🙂

    • #28801
      Torsten
      Teilnehmer

      Kleine Ergänzung zur obigen Lösung: da man das Kunststück schaffen kann, mit der Maus über dem Image zu sein, während man den Stack speichert und damit den Effekt der beim Neuladen wieder auf Originalgröße gezogenen Bildes zu haben (ist gerade passiert), ist ein weiterer Handler sinnvoll, der vor dem Speichern für alle Bilder im Stack die Property lockLoc auf true setzt.

      Dafür einfach diesen Hander ins Stack script kopieren:

      on saveStackRequest
         repeat with i = 1 to the number of cards of this stack
            repeat with j = 1 to the number of images of card i
               set the lockloc of image j of card i to true
            end repeat
         end repeat   
      end saveStackRequest

      Happy Coding
      Torsten

    • #28807
      Alfredas
      Teilnehmer

      Hallo Thorsten,

      danke für die beiden Tips.

      Die manuelle Änderung reichte für das obige Projekt, aber in Zukunft lässt sich damit das ganze erleichtern.

      Viele Grüße
      Alfredas

Ansicht von 8 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.