トップページ > プログラム > 2015年01月31日 > krmI8ohk

書き込み順位&時間帯一覧

13 位/188 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000000021025



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
Visual Studio 2013 SP6©2ch.net

書き込みレス一覧

Visual Studio 2013 SP6©2ch.net
828 :デフォルトの名無しさん[sage]:2015/01/31(土) 20:04:36.62 ID:krmI8ohk
>>827
何言ってるのかわからんけど基本全部システム任せで問題ない。
Visual Studio 2013 SP6©2ch.net
831 :デフォルトの名無しさん[sage]:2015/01/31(土) 20:47:22.71 ID:krmI8ohk
>>830
高いDPIに対応するには普通はAutoScaleMode.Dpiにする。
その時はそんな動作にならない。
Visual Studio 2013 SP6©2ch.net
833 :デフォルトの名無しさん[sage]:2015/01/31(土) 21:12:48.00 ID:krmI8ohk
AutoScaleMode.Dpiにした時の動作は基本的にWPFと同じだと思うよ。

要するに画面の座標の単位は物理ピクセルじゃなくて、DIP(1/96インチ)になると考えればいい。
厳密には違うと思うけど。

だから動的にコントロールを追加する時にも破綻は起こらない。
Visual Studio 2013 SP6©2ch.net
835 :デフォルトの名無しさん[sage]:2015/01/31(土) 23:04:01.69 ID:krmI8ohk
public partial class Form1 : Form
{
  const int HSpan = 8;
  const int HCount = 10;
  const int VSpan = 8;
  const int VCount = 10;
  readonly Size ButtonSize = new Size(40, 20);

  public Form1()
  {
    InitializeComponent();
  }

  private void SetClientSize()
  {
    var w = (HSpan + ButtonSize.Width) * HCount + HSpan;
    var h = (VSpan + ButtonSize.Height) * VCount + VSpan;
    ClientSize = new Size(w, h);
  }
Visual Studio 2013 SP6©2ch.net
837 :デフォルトの名無しさん[sage]:2015/01/31(土) 23:06:14.48 ID:krmI8ohk
  protected override void OnLoad(EventArgs e)
  {
    base.OnLoad(e);

    SetClientSize();
    int y = VSpan;
    for (int i = 0; i < HCount; i++ )
    {
      int x = HSpan;
      for (int j = 0; j < VCount; j++)
      {
        var b = new Button() { Location = new Point(x,y), Size = ButtonSize};
        Controls.Add(b);
        x += HSpan + ButtonSize.Width;
      }
      y += VSpan + ButtonSize.Height;
    }
  }
}

>>834のいうダメってのはどういう場合を言ってるんだろう。
例えば上のようなコードではDPI変えても何の不具合も起こらない。
もちろんDPIに比例して全体のサイズはちゃんと変わる。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。