C# 根据屏幕分辨率将windows窗体上的按钮控件调整为固定大小

C# 根据屏幕分辨率将windows窗体上的按钮控件调整为固定大小,c#,.net,winforms,button,C#,.net,Winforms,Button,我有一个特殊的要求,在不同的屏幕分辨率下,表单上的按钮的大小应该保持特定的大小 如上面表格所示,我有“开”和“关”两个按钮&两个按钮的大小都是2厘米,以获得特定的分辨率 现在我需要的代码,重新大小按钮到2厘米为不同的分辨率或大小的按钮应该保持不变,即使在不同的分辨率 谢谢,我不知道Winforms,但这可能通过CSS处理: @media (min-width: 221px) { #button1 { width: 200px; height: 200px

我有一个特殊的要求,在不同的屏幕分辨率下,表单上的按钮的大小应该保持特定的大小

如上面表格所示,我有“开”和“关”两个按钮&两个按钮的大小都是2厘米,以获得特定的分辨率

现在我需要的代码,重新大小按钮到2厘米为不同的分辨率或大小的按钮应该保持不变,即使在不同的分辨率


谢谢,我不知道Winforms,但这可能通过CSS处理:

@media (min-width: 221px) {
    #button1 {
        width: 200px;
        height: 200px;
    }
}
@media (min-width: 280px) {
    #button1 {
        width: 240px;
        height: 240px;
    }
}
对不同的屏幕尺寸和按钮2重复上述步骤。可以比我定义的屏幕尺寸越来越大

或者可以使用jQuery处理:

jQuery(document).ready(function ($) {

window.onresize = function () {
    if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
        $("#button1").width(($(window).width()) / (3));
        $("#button1").height(($(window).height()) / (3));
        $("#button2").width(($(window).width()) / (3));
        $("#button2").height(($(window).height()) / (3));
    }
    else {
        $("#button1").width(($(window).width()) / (1.5));
        $("#button1").height(($(window).height()) / (1.5));
        $("#button2").width(($(window).width()) / (1.5));
        $("#button2").height(($(window).height()) / (1.5));
    }
});

反正是这样的。包括手机内容,以防您需要它…

不知道Winforms,但这可能会通过CSS处理:

@media (min-width: 221px) {
    #button1 {
        width: 200px;
        height: 200px;
    }
}
@media (min-width: 280px) {
    #button1 {
        width: 240px;
        height: 240px;
    }
}
对不同的屏幕尺寸和按钮2重复上述步骤。可以比我定义的屏幕尺寸越来越大

或者可以使用jQuery处理:

jQuery(document).ready(function ($) {

window.onresize = function () {
    if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
        $("#button1").width(($(window).width()) / (3));
        $("#button1").height(($(window).height()) / (3));
        $("#button2").width(($(window).width()) / (3));
        $("#button2").height(($(window).height()) / (3));
    }
    else {
        $("#button1").width(($(window).width()) / (1.5));
        $("#button1").height(($(window).height()) / (1.5));
        $("#button2").width(($(window).width()) / (1.5));
        $("#button2").height(($(window).height()) / (1.5));
    }
});
反正是这样的。包括手机资料,以防这正是您需要的…

问题似乎是“如何使windows窗体解析独立?”。顺便说一下,在互联网上有很多例子可以使你的表单分辨率独立。不幸的是.Net没有提供任何类型的工具使您的应用程序在所有分辨率下都是通用的。但是,没有一个正确的方法

我已经发布了这方面的逻辑。你可以看看这个

您只需要将该代码添加到windows窗体中

问题似乎是“如何使windows窗体解析独立?”。顺便说一句,在互联网上有很多例子可以让你的表单独立解析。不幸的是.Net没有提供任何类型的工具使您的应用程序在所有分辨率下都是通用的。但是,没有一个正确的方法

我已经发布了这方面的逻辑。你可以看看这个

您只需要将该代码添加到windows窗体中

我们可以得到:

private int CentimeterToPixel(double Centimeter)
{
    double pixel = -1;
    using (Graphics g = this.CreateGraphics())
    {
        pixel = Centimeter * g.DpiY / 2.54d;
    }
    return (int)pixel;
}

// ...

button.Width = CentimeterToPixel(2);
几点:

  • 它使用DpiY进行转换,这可能(几乎不可能,但是 但是)与DpiX不同
  • 你可能想了解一下,新闻部 与手动缩放相比,感知是更好的选择,因为在手动缩放中 你要对所有应该做的事情负责 缩放(字体、边距、大小…)
  • 我们可以得到:

    private int CentimeterToPixel(double Centimeter)
    {
        double pixel = -1;
        using (Graphics g = this.CreateGraphics())
        {
            pixel = Centimeter * g.DpiY / 2.54d;
        }
        return (int)pixel;
    }
    
    // ...
    
    button.Width = CentimeterToPixel(2);
    
    几点:

  • 它使用DpiY进行转换,这可能(几乎不可能,但是 但是)与DpiX不同
  • 你可能想了解一下,新闻部 与手动缩放相比,感知是更好的选择,因为在手动缩放中 你要对所有应该做的事情负责 缩放(字体、边距、大小…)


  • 这看起来像是一个自定义控件的作业…是否为按钮设置锚定首先删除它,然后才能删除try@Senthilkumar如果我们设置锚定,则
    打开
    按钮将与
    关闭
    按钮重叠。因为
    关闭
    按钮的左侧位置不会相应地设置
    打开
    按钮的宽度。@terry这主意不错,在这种情况下,自定义控件不是必需的。这看起来像是自定义控件的作业…是否为按钮设置了锚点?请先将其删除,然后才能执行try@Senthilkumar如果我们设置锚定,则
    打开
    按钮将与
    关闭
    按钮重叠。因为
    关闭
    按钮的左侧位置不会相应地设置
    打开
    按钮的宽度。@terry这个主意不错,但在这种情况下不需要自定义控件。这不是web应用程序windows应用程序在这种情况下,我可能会读到:。或者尝试设置WindowsState=WindowsState。最大化并锚定按钮,以确保它们与边缘保持距离。您应该更新答案,并发布一些与winform相关的代码和建议,否则您可能会下载votehai这不是web应用程序windows应用程序在这种情况下,我可能会阅读:。或者尝试设置WindowState=WindowState。最大化并锚定按钮,以确保它们与边缘保持距离。您应该更新答案,并发布一些与winform相关的代码和建议,否则您可能会下载Votem我的问题是锚定已设置或不锚定在这种情况下不起作用。因此,如果我们要手动设置按钮大小和位置,那么我们应该避免使用
    锚定属性@sia@Shell-随着屏幕分辨率的改变,按钮控件的大小仍然会改变。我甚至试过这个公式,双像素=-1;像素=厘米*96/2.5d;返回(int)像素;我的问题是锚定设置或不锚定在这种情况下不起作用。因此,如果我们要手动设置按钮大小和位置,那么我们应该避免使用
    锚定属性@sia@Shell-随着屏幕分辨率的改变,按钮控件的大小仍然会改变。我甚至试过这个公式,双像素=-1;像素=厘米*96/2.5d;返回(int)像素@sia它究竟是如何不起作用的?厘米topixel返回的值是多少?你试过调试Cemmentopixel吗?g.DpiY的值是多少?@EugenePodskal我们如何从dpi中获得实际大小?因为DPI不会因屏幕分辨率的改变而改变。当我将结果从
    1360x768
    更改为
    1024x768
    时,控件将被拉伸@Shell DPI(PPI)是我们唯一(至少据我所知)关联像素和物理尺寸(分辨率)的方法。DPI通常不会随着分辨率的更改而自动更改,因此,在任何与标准分辨率不同的分辨率中,或者如果DPI不一致(手动更改),我们将有实际不同于所需物理大小的控件,但它们的“虚拟物理大小”将是正确的。不幸的是,正如我现在所说