Mit "Zoom" -Layout-Hintergrundbild entsprechen tatsächliche Breite und Höhe nicht immer der Breite und Höhe des enthaltenen Steuerelements, im Gegensatz zum "Stretch" -Layout. Ich frage mich, ob es eine Eigenschaft oder etwas in Winforms gibt, um aktuelle gerenderte Bilddimensionen zu erhalten, ohne irgendeine Mathematik zu machen?tatsächliche Abmessungen des Hintergrundbildes mit "Zoom" -Layout
Antwort
Dies gibt die Rectangle
Pixel von einem PictureBox
für eines der SizeModes
zurück.
Aber ja, es braucht etwas Mathematik für den Zoom-Modus.
Es kann leicht an die entsprechenden BackgroudImageLayout
Werte angepasst werden:
Rectangle ImageArea(PictureBox pbox)
{
Size si = pbox.Image.Size;
Size sp = pbox.ClientSize;
if (pbox.SizeMode == PictureBoxSizeMode.StretchImage) return pbox.ClientRectangle;
if (pbox.SizeMode == PictureBoxSizeMode.Normal ||
pbox.SizeMode == PictureBoxSizeMode.AutoSize) return new Rectangle(Point.Empty, si);
if (pbox.SizeMode == PictureBoxSizeMode.CenterImage)
return new Rectangle(new Point((sp.Width - si.Width)/2,
(sp.Height - si.Height)/2), si);
// PictureBoxSizeMode.Zoom
float ri = si.Width/si.Height;
float rp = sp.Width/sp.Height;
if (rp > ri)
{
int width = si.Width * sp.Height/si.Height;
int left = (sp.Width - width)/2;
return new Rectangle(left, 0, width, sp.Height);
}
else
{
int height = si.Height * sp.Width/si.Width;
int top = (sp.Height - height)/2;
return new Rectangle(0, top, sp.Width, height);
}
}
Kinda sieht aus wie ich es mir vorgestellt habe, aber es gibt kein einziges Wort in der Frage 'PictureBox' –
True, aber das' BackgroundImageLayout' für Controls wie 'Panel' oder' Label' sind im Grunde genommen identisch mit dem 'PictureBoxSizeMode ', außer dass es keinen 'Tile'-Modus hat, aber einen' Autosize'-Modus hat. – TaW
- 1. Vertikale Höhe des Hintergrundbildes
- 2. Skalierung einer Schaltfläche zum Anpassen des Hintergrundbildes
- 3. Problem mit Reaktionsfähigkeit des Hintergrundbildes und passen
- 4. Dehnen eines Teils des Hintergrundbildes
- 5. Erhalten Sie die endgültige Größe des Hintergrundbildes
- 6. Einstellen des Hintergrundbildes aus einer Galerieansicht?
- 7. Höhe des Hintergrundbildes im UC-Browser einstellen
- 8. Wie ohne zunehmende Größe des Hintergrundbildes
- 9. CSS Text in der Mitte des Hintergrundbildes
- 10. Wie ändert sich die Deckkraft des Hintergrundbildes?
- 11. Erhalten tatsächliche Höhe des Dokuments mit jQuery
- 12. CSS: Ändern Undurchsichtigkeit des Hintergrundbildes innerhalb des Körpers Elementselektoreinrichtung
- 13. Größe des Hintergrundbildes proportional zum Maßstab mit einem Mittelpunkt ändern
- 14. Abmessungen des Tablet-Geräts bedeuten Ausrichtung?
- 15. Zoom in der Mitte des Bildes als Ursprung mit Layout-Transformation
- 16. Hinzufügen eines unscharfen Hintergrundbildes
- 17. Neuer Bild-Zoom des Mediums
- 18. Flex: Abmessungen einer Anwendung
- 19. BIRT - Kreuztabellen mit denselben Abmessungen ausrichten
- 20. Abnormales Verhalten der Zoom- und Zoom-Out-Funktionalität des JFreeChart?
- 21. Wie mache ich den schwarzen Teil des Hintergrundbildes transparent?
- 22. Erhalten Sie das Seitenverhältnis des Hintergrundbildes in jQuery
- 23. Einstellen des Hintergrundbildes von Webview auf eine Ressourcengrafik in Android
- 24. Swift: Wie kann ich die Größe des Hintergrundbildes ändern?
- 25. Hintergrund-Größe: Abdeckung nicht Einstellung Höhe des Hintergrundbildes
- 26. ThreeJS Update-Abmessungen von Shape
- 27. Animierte Höhe von SVG ohne Änderung der Proportionen des Hintergrundbildes
- 28. Zugriff auf die UIImageView des Hintergrundbildes eines UIButton
- 29. Anwenden eines Hintergrundbildes für Registerkarten in Android
- 30. UWP Programmatisches Ändern des Hintergrundbildes der XAML-Seite C#
Nichts, was ich kenne. Ist die Mathematik wirklich so einschüchternd? – adv12
@ adv12 nein, ich liebe Mathe, in der Tat habe ich es schon getan, während ich auf die Antwort gewartet habe, aber warum erfinde ich ein Rad neu? –