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
        Administrator

          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
            Administrator

              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
                Administrator

                  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.