1

ある場所から別の場所にファイルをコピーするという非常に限られた機能を可能にする小さなテストアプリケーションを作成しました。機能が制限されているため、ウィンドウサイズを固定しました(falseとして最大化し、250x200ピクセルの高さと幅を明確に定義しました)。2つのファイル参照要素と[コピー]ボタンだけです。

私の友人はそれを自分のPCでテスト実行しましたが、問題はほとんどの友人にとってうまく実行されたことですが、3人はアプリケーションの高さが十分でなく、コピーボタンが80%非表示になっていることに気付きました(見えた)。それらの1つは1920x1080の解像度で、他の2つは1366x728でした。そして、すべてのテストPCはWindows7コンピューターでした。

これはどのように、そしてなぜ起こるのでしょうか?

4

2 に答える 2

2

1 つ考えられるのは、彼らの DPI 設定があなたのコンピューターとは異なるということです。

コントロール パネル\外観とカスタマイズ\ディスプレイ

于 2012-05-28T19:32:58.557 に答える
1

false として最大化され、250x200 ピクセルの高さと幅が明確に定義されている

このサイズをフォーム コンストラクターでのみ設定する限り、問題ありません。FormBorderStyle を Fixed に設定して、ウィンドウのサイズを変更できないことを明確にします。Load イベントや Resize イベントのように、後でそれを行うと、高解像度の優れたディスプレイを使用しているユーザーを不快にさせることになります。または「網膜」ディスプレイ、私たちはすぐにそれらを手に入れるでしょう. ビデオ アダプタの 1 インチあたりのドット数の設定を上げて、虫眼鏡なしで 8 ポイントのテキストを読めるようにする必要があります。

これにより、テキストがより多くのピクセルでレンダリングされます。これには、コントロールを大きくする必要があり、サイズはピクセル単位で指定されます。それらを大きくしないと、小さなコントロールに大きなテキストが表示され、見栄えが悪く、読みにくくなります。コントロールが大きくなると、コントロールが移動し、フォームがコントロールに収まるように大きくなる必要があります。

フォームの AutoScaleMode 設定のおかげで、これはすべて自動的に行われます。デフォルトでは、必要なものだけである Font に設定されています。ただし、フォームを元のデザイン サイズに強制的に戻すと、移動したコントロールが切り取られてしまいます。

ビデオの dpi 設定をいじる以外に、そのようなマシンでフォームが引き続き適切に機能するかどうかを確認する簡単な方法は、Load イベント ハンドラーの次のテスト コードです。

    protected override void OnLoad(EventArgs e) {
        this.Font = new Font(this.Font.FontFamily, this.Font.Size * 125 / 96f);
        base.OnLoad(e);
    }
于 2012-05-28T20:02:18.153 に答える