ピクセルの問題を解決する直接的な解決策はありません。しかし、私たちは自分たちでそれを行うことができます。まず、フォームで使用可能なコントロールを見つけてから、サイズを変更する必要があります。
フォームのすべてのコントロールを識別し、アプリケーションのコントロールのリストを返すクラス「IdentifyControls.cs」を追加します。メニューバーから[プロジェクト]->[クラスの追加]を選択して、アプリケーションにクラスを追加できます。次に、次のように入力します
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace FallingFlowers // Falling Flowers is the name of my project
{
public static class IdentifyControl
{
public static List<Control> findControls(Control c)
{
List<Control> list = new List<Control>();
foreach (Control control in c.Controls)
list.Add(control);
return list;
}
}
}
次に、「demo.cs」などの別のクラスをアプリケーションに追加します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.IO;
namespace FallingFlowers // Falling Flowers is the name of my project
{
public class demo
{
public static void relocate(Form fo, int ox, int oy)
{
List<Control> list = new List<Control>();
list = IdentifyControl.findControls(fo);
for (int i = 0; i < list.Count; i++)
reposition(list[i], ox, oy);
}
public static void reposition(Control c, int ox, int oy)
{
int x, y;
x = ((c.Location.X * Screen.PrimaryScreen.Bounds.Width) / ox);
y = ((c.Location.Y * Screen.PrimaryScreen.Bounds.Height) / oy);
c.Location = new Point(x, y);
x = ((c.Width * Screen.PrimaryScreen.Bounds.Width) / ox);
y = ((c.Height * Screen.PrimaryScreen.Bounds.Height) / oy);
c.Width = x;
c.Height = y;
if (c is Label || c is Button)
resizeText(c, ox, oy);
}
public static void resizeText(Control l, int ox, int oy)
{
float s;
float txtsize = l.Font.Size;
s = ((txtsize * Screen.PrimaryScreen.Bounds.Width) / ox)+1;
l.Font = new Font(l.Font.Name, s,l.Font.Style);
}
public static void repositionForm(Form f, int ox, int oy)
{
int x, y;
x = (f.Location.X * Screen.PrimaryScreen.Bounds.Width) / ox;
y = (f.Location.Y * Screen.PrimaryScreen.Bounds.Width) / oy;
f.Location = new Point(x, y);
}
}
}
このクラスには、コントロールの再配置、テキストのサイズ変更、およびフォームのサイズ変更を行うためのメソッドが含まれています。
フォームのloadイベントでこれらの関数を呼び出します。
フォーム内のすべてのコントロールを再配置するには
demo.relocate(this, 1366, 768);
ここで、1366と768は、アプリケーションが開発された元の解像度です。
フォームを再配置するには:
demo.repositionForm(this, 1366, 768);
1366および768は、アプリケーションが開発された元の解像度です。
あなたにとってはそうなるでしょうdemo.relocate(this, 1920, 1080);
。
これがお役に立てば幸いです:-)...