Image in Rectangle ausrichten?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von VaporiZed.

    Image in Rectangle ausrichten?

    Hallo zusammen,
    ich befasse mich gerade mit dem Drucken eines Dokumentes.

    Hier gebe ich ein Rectangle an und zeichne dort ein Bild hinein.
    Nun wird es oben links im Rectangle angeheftet, ich möchte es aber gerne auf der rechten Seite haben. Gibt es da eine Möglichkeit?
    Ich nutz die DrawImageUnstreched Methode und finde da keine Überladung die dies beinhaltet, noch eine andere Möglichkeit wie es zum beispiel bei Strings funktioniert.
    Da geht es ja zb mit

    VB.NET-Quellcode

    1. Dim strFormat As New StringFormat
    2. strFormat.Alignment = StringAlignment.Far
    3. strFormat.LineAlignment = StringAlignment.Near


    Hier mal der Code den ich für das Image und Rectangle nutze:

    VB.NET-Quellcode

    1. With e.Graphics
    2. Dim rectLogo As New Rectangle(rc.Left, 300, rc.Width, 200)
    3. .DrawRectangle(Pens.Black, rectLogo)
    4. Dim Logo As Image = Image.FromFile("C:\..\..\klein.png")
    5. .DrawImageUnscaled(Logo, rectLogo)
    6. End With


    Das Rectangle zeichne ich nur zu Testzwecken, es soll später nicht gezeichnet werden.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Ich habe mir diesen Artikel schon mehrfach durchgelesen, aber ich bin mir gerade nicht sicher wo ich da den Ansatz zu meinem Problem finde.

    Ich habe kein Problem das Image mit Positionsangabe zu positionieren nur wäre das das nicht innerhalb des Rectangles.
    Vielleicht mache ich es mir auch zu kompliziert weil ich alles geordnet und strukturiert haben möchte.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Irgendwas schein ich an dem Problem nicht zu verstehen, denn meine Lösung ist ziemlich trivial. Die DrawImageUnscaled-Funktion fragt doch nach den Koordinaten, wo das Bild hin soll. Folglich:

    VB.NET-Quellcode

    1. With e.Graphics
    2. Dim rectLogo As New Rectangle(rc.Left, 300, rc.Width, 200)
    3. .DrawRectangle(Pens.Black, rectLogo)
    4. Dim Logo As Image = Image.FromFile("C:\..\..\klein.png")
    5. rectLogo.Offset(rectLogo.Width - Logo.Width, rectLogo.Height - Logo.Height)
    6. .DrawImageUnscaled(Logo, rectLogo)
    7. End With

    -> Ausrichtung unten rechts. Oben rechts wär eben mit rectLogo.Offset(rectLogo.Width - Logo.Width, 0)
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Oh man, danke für den Tip.
    Ich habe echt alles ausprobiert, aber an Offset habe ich nicht gedacht. :(

    Danke dir für deine Hilfe.
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Naja, das Offset ist hier nur das schnellste Mittel zur Lösung. Es geht ja nur darum, die richtigen Imagekoordinaten festzulegen. Man hätte auch irgendwelche Koordinaten nehmen können. Das Image ist ja in keiner Weise an das Rectangle gebunden, sondern das Rectangle wird ja nur als Orientierungshilfe oder Koordinatengeber verwendet.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.