Ejemplo n.º 1
0
 /* ----------------------------------------------------------------- */
 ///
 /// UpdateControl
 ///
 /// <summary>
 /// DPI の変更に応じてレイアウトを更新します。
 /// </summary>
 ///
 /// <param name="src">更新対象となるコントロール</param>
 /// <param name="olddpi">変更前の DPI</param>
 /// <param name="newdpi">変更後の DPI</param>
 ///
 /* ----------------------------------------------------------------- */
 public static void UpdateControl(this IDpiAwarable src, double olddpi, double newdpi)
 {
     if (olddpi > 1.0 && src is IControl control)
     {
         var ratio = newdpi / olddpi;
         var x     = (int)(control.Location.X * ratio);
         var y     = (int)(control.Location.Y * ratio);
         control.Location = new Point(x, y);
     }
     UpdateLayout(src, olddpi, newdpi);
 }
Ejemplo n.º 2
0
 /* ----------------------------------------------------------------- */
 ///
 /// UpdateDpi
 ///
 /// <summary>
 /// DPI の変更に応じてレイアウトを更新します。
 /// </summary>
 ///
 /// <param name="src">更新対象となるコントロール</param>
 /// <param name="before">変更前の DPI</param>
 /// <param name="after">変更後の DPI</param>
 ///
 /* ----------------------------------------------------------------- */
 public static void UpdateDpi(this IDpiAwarable src, double before, double after)
 {
     if (before > 1.0 && src is IControl control)
     {
         var ratio = after / before;
         if (!(control is IForm))
         {
             UpdateLocation(control, ratio);
         }
         UpdateLayout(control, ratio);
     }
 }
Ejemplo n.º 3
0
        /* ----------------------------------------------------------------- */
        ///
        /// UpdateLayout
        ///
        /// <summary>
        /// DPI の変更に応じてレイアウトを更新します。
        /// </summary>
        ///
        /* ----------------------------------------------------------------- */
        public static void UpdateLayout(IDpiAwarable src, double olddpi, double newdpi)
        {
            var control = src as IControl;

            if (control != null && olddpi > 1.0)
            {
                var ratio = newdpi / olddpi;

                var w = (int)(control.Size.Width * ratio);
                var h = (int)(control.Size.Height * ratio);
                control.Size = new Size(w, h);

                var ml = (int)(control.Margin.Left * ratio);
                var mt = (int)(control.Margin.Top * ratio);
                var mr = (int)(control.Margin.Right * ratio);
                var mb = (int)(control.Margin.Bottom * ratio);
                control.Margin = new System.Windows.Forms.Padding(ml, mt, mr, mb);

                var pl = (int)(control.Padding.Left * ratio);
                var pt = (int)(control.Padding.Top * ratio);
                var pr = (int)(control.Padding.Right * ratio);
                var pb = (int)(control.Padding.Bottom * ratio);
                control.Padding = new System.Windows.Forms.Padding(pl, pt, pr, pb);

                if (control.Font != null)
                {
                    var name  = control.Font.FontFamily.Name;
                    var size  = (float)(control.Font.Size * ratio);
                    var unit  = control.Font.Unit;
                    var style = control.Font.Style;
                    control.Font = new Font(name, size, style, unit);
                }
            }

            if (control is System.Windows.Forms.Control native)
            {
                foreach (var c in native.Controls)
                {
                    if (c is IDpiAwarable dac)
                    {
                        dac.Dpi = control.Dpi;
                    }
                }
            }
        }