Registriert seit: 11.04.2014
Version(en): Office 365
Hallo!
Ich erstelle in VBA QR-Codes in unterschiedlichen Größen. Das Bild wird in einem Frame dargestellt. Nun möchte ich die Bilder abhängig von der Größe im Frame zentrieren. Leider finde ich keine Beispielcodes. Wie kann ich das Bild im Frame zentrieren? Danke!
Gruß, René
Registriert seit: 14.04.2014
Version(en): Office 2013/2016/2019/365
Hi,
ich vermute mal du meinst ein Image-Frame?
Das Zentrieren wäre aber dabei sogar ein Default der Eigenschaften?
ggf. müsstest du auch den SizeMode ändern
Oder verstehe ich jetzt was falsch?
lg
lg Chris
Feedback nicht vergessen.
3a2920576572206973742064656e20646120736f206e65756769657269672e
Registriert seit: 11.04.2014
Version(en): Office 365
Nein. Ich meine einen Rahmen (Amerikanisch: Frame). Und in diesem Rahmen (Frame) ist ein Image-Control (Deutsch: Anzeige, oder auch Bildanzeige). Und dieses Image-Control möchte im Rahmen zentrieren, je nach Größe des Image-Controls. Die Größe des Image-Controls kann ich wählen (57x57, 83x83, 105x105 etc.), je nach gewählter Größe des QR-Codes. Der Rahmen ist dabei 3 Millimeter größer als die maximale Größe des QR-Codes, also 180x180 (QR-Code maximal 177x177).
Registriert seit: 14.04.2014
Version(en): Office 2013/2016/2019/365
Hi,
klingt für mich nach einer Spielerei mit Pixeln.
Je nach dem welche Größe das Img. hat die Position mit Left und Top anpassen.
Nur warum nicht einfach gleich das Bild in den Frame packen?
dann wäre Zentrieren kein Thema...
lg Chris
Feedback nicht vergessen.
3a2920576572206973742064656e20646120736f206e65756769657269672e
Registriert seit: 11.04.2014
Version(en): Office 365
Das kann nicht funktionieren da die Originalbilder zu groß sind (ab 400 Pixel). Und wenn man den Rahmen an der QR-Code-Größe ausrichtet hat man mit dem Rahmen das selbe Problem, nämlich dass der Rahmen nicht dort zentriert wird wo man es haben möchte, das sieht dann optisch genauso bescheiden aus wie mit der Bildanzeige. Ich lege nun mal großen Wert auf gute optische Gestaltung meiner Dialoge, vor allem wenn ich die Projekte weitergeben möchte.
Registriert seit: 16.08.2017
Version(en): Alle
11.09.2017, 13:35
(Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2017, 13:36 von Jeanie.)
Nachfrage:
Ist das nun ein Imagecontrol in einem Frame?
Image1.Left = Frame1.Width / 2 - Image1.Width / 2
Registriert seit: 11.04.2014
Version(en): Office 365
11.09.2017, 14:38
(Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2017, 14:38 von mumpel.)
Habe ich schon versucht. Da landet das Image irgendwo in der Userform, aber nicht mehr im Frame. Man muss also Frame1.left ebenfalls berücksichtigen.
Im Übrigen ist bei dieser Rechnung das Bild nicht mittig zentriert. Das Bild beginnt dann in der Mitte. Es muss aber die Bildmitte im Mittelpunkt stehen, nicht der linke Rand des Bildes.
Registriert seit: 16.08.2017
Version(en): Alle
(11.09.2017, 14:21)mumpel schrieb: Habe ich schon versucht. Da landet das Image irgendwo in der Userform, aber nicht mehr im Frame. Man muss also Frame1.left ebenfalls berücksichtigen.
Wenn es irgenwo in der UF landet, dann war es kein Child vom Frame sonder der UF , dies war ja auch meine Frage.
Aber das gibt doch keinen Sinn, das Image nicht im Frame als Child zu haben.
Zu not lädts du halt eines nach in der Art:
Code:
Dim im As MSForms.Image
Set im = Frame1.Controls.Add("Forms.Image.1", "MeinTollesImage")
im.Left = Frame1.Width / 2 - im.Width / 2
im.Top = Frame1.Top / 2 - im.Top / 2
Registriert seit: 29.09.2015
Version(en): 2030,5
11.09.2017, 14:44
(Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2017, 14:44 von snb.)
@Mumpel,
Bitte sag mal: ActiveX controls oder userform controls ?
Rechnung: im Excel Arbeitsblatt ? in Word ?
Sei bitte nicht so fragmentarisch.
Registriert seit: 11.04.2014
Version(en): Office 365
11.09.2017, 15:16
(Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2017, 15:18 von mumpel.)
In der Threadüberschrift steht Userform. ;) Es ist natürlich eine Bildanzeige in der Userform, die "Standard-Anzeige".
Aber wahrscheinlich wäre es sehr viel einfacher das Bild gleich in der erforderliche Größe zu speichern. Dann erspart man sich das Skalieren per VBA, und man kann automatisch zentrieren. Aber mit GDIPlus kenne ich mich nicht so gut aus.