using System.ComponentModel; using System.Drawing; namespace System.Windows.Forms { public class PictureBox : Control, ISupportInitialize { private System.Windows.Controls.Image imageControl; protected new System.Windows.Controls.ContentControl control { get; } private Image image; public Image Image { get => image; set { image = value; imageControl.Source = Helper.GetImage(value); UpdateAutoSize(); } } private PictureBoxSizeMode sizeMode; public PictureBoxSizeMode SizeMode { get => sizeMode; set { sizeMode = value; imageControl.Stretch = sizeMode switch { PictureBoxSizeMode.StretchImage => Media.Stretch.Fill, PictureBoxSizeMode.Zoom => Media.Stretch.Uniform, _ => Media.Stretch.None }; if (sizeMode == PictureBoxSizeMode.Normal) { imageControl.HorizontalAlignment = Windows.HorizontalAlignment.Left; imageControl.VerticalAlignment = Windows.VerticalAlignment.Top; } else if (sizeMode == PictureBoxSizeMode.CenterImage) { imageControl.HorizontalAlignment = Windows.HorizontalAlignment.Center; imageControl.VerticalAlignment = Windows.VerticalAlignment.Center; } else { imageControl.HorizontalAlignment = Windows.HorizontalAlignment.Stretch; imageControl.VerticalAlignment = Windows.VerticalAlignment.Stretch; } UpdateAutoSize(); } } private void UpdateAutoSize() { if (SizeMode == PictureBoxSizeMode.AutoSize) { Width = Image == null ? 0 : Image.Width; Height = Image == null ? 0 : Image.Height; } } public void BeginInit() { } public void EndInit() { } public PictureBox() { imageControl = new(); control = new(); control.Content = imageControl; SetControl(control); } } }