Bilder
Manfred Prager
In einem Beleg möchte ich Bilder, die unterschiedlich groß gespeichert sind, in einer einheitlichen Größe drucken. Wie mache ich das?Beste Grüße
Manfred Prager
Philipp Knecht
HalloMittels dem Property Stretch des Images wird das Bild auf die festgestzte Grösse (Den Rahmen) gesetzt.
hth
Daniel Ebi
Hallo,zu den Bildern habe ich noch ne Frage: Ist es möglich, bei eingebundenen Bildern bei der Stretch-Funktion die Seitenverhaeltnisse beizubehalten?
Ich habe verschieden grosse Bilder, die alle in einer bestimmten Breite gedruckt werden sollen. Die Hoehe muesste demnach entsprechend der Breite skaliert werden.
Schoene Gruesse
Daniel
Christian Gey
HalloIch hänge mich mal an diesen Thread, da ich ebenfalls ein Problem mit der Darstellung von Bildern im richtigen Seitenverhältnis habe.
Zuerst einmal habe ich das Bild über Bindings.Image mit folgendem Script geladen:
LD.DrawImage(GetData("B1_Data.CompanyDefaults.BitmapPath") & Artikel("PicturName"))
Das klappt soweit ganz gut. Wenn ich allerdings den Sizemode auf Stretch setze um die Bildgröße das Picture-Object anzupassen, werden die Proportionen nicht beibehalten.
Man müsste doch die Höhe und Breite des Bildes über das Size-Property steuern können!?
Meinem Verständnis nach sollte die Funktion GetDimensions() die benötigten Werte liefern. Hierzu habe ich folgendes Script an Binding.Size gehängt:
LD.GetDimensions(8,7,Ld.DrawImage(Data("B1_Data.CompanyDefaults.BitmapPath") + Artikel("PicturName")))
Allerdings führt das dazu, dass nur eine winzige Version des Bildes an der linken oberen Ecke des Picture-Objektes angezeigt wird.
Wo liegt der Fehler?
MFG
Christian Gey
Manuel Marhold
Hi Christian,wenn ich mich recht entsinne dann entsprechen die ersten beiden Übergabewerte bei LD.GetDimensions die maximal Höhe und Breite.
Du hast dort 8 und 7 angegeben, das ist verdammt klein..
Gruß
Manuel
Christian Gey
[quote]"ManuelMarhold"]Hi Christian,
wenn ich mich recht entsinne dann entsprechen die ersten beiden Übergabewerte bei LD.GetDimensions die maximal Höhe und Breite.
Du hast dort 8 und 7 angegeben, das ist verdammt klein..
Gruß
Manuel
[/quote]
Hallo Manuel
Danke für den Hinweis. Leider ist nirgendwo so richtig die Befehlssyntax beschrieben. Ich hatte auch erst vermutet das die übergebenen Maximalwerte für Breite und Höhe zu klein sind und daher mit größeren Werten experimentiert.
Das Ergebnis war leider immer das oben beschriebene.
MfG
Christian Gey
Manuel Marhold
Hi Christian,hier mal der Code, den wir nutzen:
picItem.Visible = False
If Not LD.IsEmpty(DocumentRow("RowRowItems.PicturName")) Then
' Zeiche Bild
Dim sPath As String = GetData("B1_Data.CompanyDefaults.BitmapPath") & DocumentRow("RowRowItems.PicturName")
If System.IO.File.Exists(sPath)
picItem.Image = LD.DrawImage(sPath)
' Optimiere Grösse
picItem.Size = LD.GetDimensions(600,600,picItem.Image)
picItem.Visible = True
End If
End If
hth
Manuel
Christian Gey
Hallo ManuelDanke für den Code. Wenn ich diesen verwende bleiben die Bilder im richtigen Seitenverhältnis. Allerdings kann das Bild nicht mehr über seine Originalgröße (in Pixeln) hinaus vergrößern um den vorhanden Platz optimal auszunutzen. Anscheinend lassen sich Size und Sizemode nicht kombiniert miteinander verwenden, oder?
MfG
Christian Gey
Philipp Knecht
Hi ChristianJa die Size wird ja von der Funktion gesetzt.
Du müsstes also noch so was in der Art Minimum Width und Minimum Height berücksichtigen damit der Modus Stretch wieder zieht.
Mögliche Lösung :
picItem.Visible = False
If DocumentRow("RowRowItems.PicturName")<>"" Then
' Zeiche Bild
Dim sPath As String = GetData("B1_Data.CompanyDefaults.BitmapPath") & DocumentRow("RowRowItems.PicturName")
If System.IO.File.Exists(sPath)
picItem.Image = LD.DrawImage(sPath)
if picItem.Image.Size.Width > 200 Or picItem.Image.Size.Height > 200 Then
' Optimiere Grösse
picItem.Size = LD.GetDimensions(600,600,picItem.Image)
End If
picItem.Visible = True
End If
End If
hth
Christian Gey
Hallo PhilippIrgendwie erreiche ich trotz eurer Hilfe nicht das was ich will. Also der UseCase ist folgender:
Ich benötige eine Artikelliste inklusiver Bilder, wobei sich auf jeder A4-Seite 3 Artikel befinden sollen.
Jedes der Bilder kann eine andere Größe und ein anderes Seitenverhältnis und eine anderer Auflösung aufweisen.
Für die Darstellung innerhalb der Artikelliste ist pro Artikel ein stets gleich goßes Feld vom Typ Picture vorgesehen (Breite 8cm, Höhe 7cm).
Die Bilder sollen innerhalb dieses Picture-Objektes stets zentriert dargestellt werden und den vorhandenen Platz maximal ausnutzen (vergrößern bei zu geringer Bildgröße, verkleinern bei zu großen Bildern).
Die originalen Seitenverhältnisse müssen dabei beibehalten werden.
Ist das mit dem Designer überhaupt zu bewerkstelligen?
MfG
Christian Gey
Philipp Knecht
Hallo ChristianBin mir ziemlich sicher dass dies lösbar ist.
Eventuell kann ich das ganze ja zuammen mit Gerhard erarbeiten?
hth
Philipp Knecht
HalloHab dir die Lösung angehängt. Die Grösse wird nun rein von der TextBox definiert und muss nicht mehr explicit angegeben werden.
hth
Attachment
[url=http://www.coresystems.ch/wp-content/../wp-content/forum-file-uploads/philipp/imageSample.zip]imageSample.zip[/url]
Christian Gey
Hi PhilippVielen Dank für deine Bemühungen. Leider funktioniert dein Beispiel nicht wenn ich es auf mein Layout anpasse. Im Gegensatz zu deinem Beleg verwende ich im Advanced Data Band nur einen Detailbereich, der sich je nach Anzahl der ausgewählten Artikel n-mal wiederholt.
In dem Fall werden alle Bilder stark verkleinert dargestellt.
Wenn ich DoublePass auf False setze werden sie etwas größer, sind aber noch weit von der optimalen Darstellung entfernt. Vermutlich merkt er sich beim Wiederholungsbereich nur einen (den letzten?) Auflösungswert und verwendet diesen Wert dann für alle Bilder.
MfG
Christian Gey
Philipp Knecht
Hi ChristianMüsste eigentlich gehen. Schau mir das sonst remote an.
Melde dich.
hth
KaH
Hallo!Habe dasselbe Problem wie Christian gehabt. (Bilder werden zum Ende der Artikelliste immer kleiner.)
Dies liegt daran, so vermute ich, dass das Picture-Objekt nur einmal initialisiert und dann weiterverwendet wird. Abhilfe hat bei mir folgendes Workaround geschaffen:
Eine globale Variable vom Typ Vector im Common Script deklarieren. Im GenerateScript des Documents die Originalgröße des Pictures in die globale Variable übertragen:
origSizePic2 = Picture2.Size
Im Generatescript des Pictures bei jedem Durchlauf die Originalgröße wiederherstellen:
picture2.Size = origSizePic2
Grüße
Kai
Mario Byttebier
Hello Kai,is it possible to receive the code, please ?
I have added the modifications, the size is still the same but the left position is moving from left to right !!!
thanks,
Mario
Philipp Knecht
HiWe have adressed this issue in the recent Beta.
There bis now an advancedPicture Element which you may use.
It has some additional properties like FilePath and Max Height which solves this issues quite easely.
hth
Mario Byttebier
Hi Philipp,how is it possible to get this beta version ?
I would like to test some new stuff ?
thx,
Mario
Philipp Knecht
Hi marioYou can activate Betas yourself on http://portal.coresystems.ch
Goto the specific system and Check the Get Betas - Checkbox.
hth
0
Please sign in to leave a comment.
Comments
0 comments