Canvasgröße an Bildgröße anpassen

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

Pebender

Betreff: Canvasgröße an Bildgröße anpassen

BeitragSo, Jul 10, 2011 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

wie in der Überschrift ersichtlich möchte ich das Canvas an die errechnete Bildgröße anpassen.
Habe dazu ein Bildgeladen, die Größe an das Canvas angepasst.
Nun ist es halt so, das ein Bild, das nicht das komplette Canvas ausfüllt,im Hintergrund schwarz ist.
ich hatte es so probiert:

Code: [AUSKLAPPEN]
 GadgetHeight(vorlage) = faktor_h#   'Canvas an Bildhöhe anpassen
     GadgetWidth(vorlage) = faktor_b#   'Canvas an Bildbreite anpassen


nun bekomme ich folgende Fehlermeldung:

Compile Error

Expression must be a Variable.

Wobei faktor_h# und faktor_b# als global deklariert sind.
Oder kann es daran liegen, das es eine Fließkommazahl ist ??
Wenn ja, wie wandele ich eine Fließkommazahl in den nächsten Integer um

mfg Peter
BMax & MaxGUI

Ana

BeitragSo, Jul 10, 2011 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Du machst hier einen grundsätzlichen Fehler.

Das L Value, also die linke Seite einer Zuweisung, muss nach Definition eine einzelne Variable, genauer gesagt die Referenz auf eine Speicherstelle sein, statt dessen rufst du eine Funktion auf, die dir einen Wert gibt, der aber nirgendwo als Variable gespeichert wird und damit kannst du ihm auch nichts sinnvoll zuweisen.
Damit hast du ein ungültiges LValue und hier ist das Problem.
Versuchs mal mit irgendwas in richtung SetGadgetHeight(Gadget,Height) oder sowas.
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine

Thunder

BeitragSo, Jul 10, 2011 20:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Funktion heißt SetGadgetShape. Mit ihr kannst du Position und Größe eines Gadgets ändern.
BlitzMax: [AUSKLAPPEN]
Local canvas:TGadget=CreateCanvas(10, 10, 400, 300, window) ' x=10, y=10, w=400, h=300
SetGadgetShape canvas, 20, 20, 320, 240 ' x=20, y=20, w=320, h=240


Wenn du nur die Größe ändern willst musst du die Position mit GadgetX bzw. GadgetY erfragen.

mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Pebender

BeitragSo, Jul 10, 2011 23:04
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo Thunder,

das funktioniert zwar, das das Canvas die Größe des Bildes annimmt, aber das geladenen Bild blitzt nur kurz auf und dann ist das Canvas wieder schwarz:

Code: [AUSKLAPPEN]
           as$=RequestFile("Öffnen","*,jpg,png,bmp")  'Bilddatei laden
           datei=LoadImage(as$) 'Datei laden
          Notify as$
             a#=ImageHeight(datei)      'Bildhöhe auslesen
                 b#=ImageWidth(datei)      'Bildbreite auslesen
             bild_b# = 300 / b#      'Faktor für die Bildbreite
              bild_h# = 300 / a#      'Faktor für die Bildhöhe
               faktor_b# = b# * bild_b#   'errechnete Bildbreite für Canvasfeld
                faktor_h# = a# * bild_b#   'errechnete Bildhöhe für Canvas
                   SetGadgetShape vorlage, 490, 20, faktor_b#, faktor_h#
               DrawImageRect(datei,0,0,faktor_b#,faktor_h#) 'Bild zeichnen
               Flip


und wenn ich die Farbe des Canvases mit SetGadgetColor ändern will, passiert auch nichts.

mfg Peter
BMax & MaxGUI

Holzchopf

Meisterpacker

BeitragSo, Jul 10, 2011 23:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Zeichnest du denn das Bild auch bei Auftreten jedes EVENT_GADGETPAINT wieder neu? Ein Canvas kann man afaik nicht mit SetGadgetColor einfärben. Da müsstest du dann mit SetClsColor + Cls arbeiten.
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BYBinaryBorn - Yogurt ♫ (31.10.2018)
Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm

Pebender

BeitragSo, Jul 10, 2011 23:24
Antworten mit Zitat
Benutzer-Profile anzeigen
so habs jetzt raus, muß so aussehen:

Code: [AUSKLAPPEN]
as$=RequestFile("Öffnen","*,jpg,png,bmp")  'Bilddatei laden
           datei=LoadImage(as$) 'Datei laden
          Notify as$
           a#=ImageHeight(datei)      'Bildhöhe auslesen
                 b#=ImageWidth(datei)      'Bildbreite auslesen
             bild_b# = 300 / b#      'Faktor für die Bildbreite
              bild_h# = 300 / a#      'Faktor für die Bildhöhe
               faktor_b# = b# * bild_b#   'errechnete Bildbreite für Canvasfeld
                faktor_h# = a# * bild_b#   'errechnete Bildhöhe für Canvas
                   DrawImageRect(datei,0,0,faktor_b#,faktor_h#) 'Bild zeichnen
               SetGadgetShape (vorlage:TGadget, 490, 20, faktor_b#, faktor_h#)
               Flip
               


mfg Peter
BMax & MaxGUI

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group