Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 窗口平铺算法_C#_Window - Fatal编程技术网

C# 窗口平铺算法

C# 窗口平铺算法,c#,window,C#,Window,我有一个带有两个按钮的表单: 打开一个新表单,并将其放入列表中 平铺打开的窗体 我现在需要做的是编写一个算法,最大化表单占用的用户屏幕。显然这很简单,所以我有一些额外的要求: 宽高比必须在给定的间隔内,例如[a,b] 窗口可以由V像素“垂直”和H像素“水平”重叠 编辑:因为它似乎不清楚,这里的代码 public static List<Form> formlist = new List<Form>(); ... priva

我有一个带有两个按钮的表单:

  • 打开一个新表单,并将其放入列表中
  • 平铺打开的窗体
  • 我现在需要做的是编写一个算法,最大化表单占用的用户屏幕。显然这很简单,所以我有一些额外的要求:

  • 宽高比必须在给定的间隔内,例如[a,b]
  • 窗口可以由V像素“垂直”和H像素“水平”重叠
  • 编辑:因为它似乎不清楚,这里的代码

            public static List<Form> formlist = new List<Form>();
            ...
    
            private void button2_Click(object sender, EventArgs e)
            {
                Form f = new Form();
                f.Text = "Title";
                ...
                formlist.Add(f);
                f.Show();
             }
    
            private void button3_Click(object sender, EventArgs e)
            {
                 foreach(Form f in formlist)
                 {
                        f.Width =  *** opt width ***;
                        f.Height = *** opt height ***;
                        f.SetDesktopLocation( ***opt x***,*** opt y***);
                 }
            }
    
    publicstaticlist formlist=newlist();
    ...
    私有无效按钮2\u单击(对象发送者,事件参数e)
    {
    表格f=新表格();
    f、 Text=“Title”;
    ...
    格式列表。添加(f);
    f、 Show();
    }
    私有无效按钮3\u单击(对象发送者,事件参数e)
    {
    foreach(表格列表中的表格f)
    {
    f、 宽度=***可选宽度***;
    f、 高度=***选择高度***;
    f、 SetDesktopLocation(***选项x***,***选项y***);
    }
    }
    
    一旦你清楚地写下你的问题,你可能已经知道答案了(很可能你会知道,因为在屏幕上排列几个矩形通常是件小事)。如果没有,那么你至少已经向读者解释了你希望他们为你回答的问题


    所以,试着写下问题…

    3。您还要一杯啤酒和薯条吗?请不要在标题中加标签。哦,作为旁注,假设屏幕宽度是W,高度是HN,但限制不够。这不是一个可用的用户界面,创建一个表单,平铺其内容。@Andrzej Nosal:我不需要任何人为我编写算法。我只是想知道是否有人知道这样的算法。不幸的是,我不知道。我希望现在的问题不是模棱两可的。。。但我将尝试重新思考:是否存在一个NP算法来解决具有这些约束的广义背包问题?您的问题并没有说得很清楚(除了您希望将某些窗口“最优”地放置在某个位置)。然而,你的评论提到背包问题。这些信息是否应该在你的问题中?根据这些编辑,我还将编辑我的答案……让我们用一个例子试试:)你玩过在线扑克吗?我需要像fulltilt或pokerstar软件一样在扑克桌上平铺框架。到目前为止,我所了解的是,您希望“在矩形网格中排列n个表单”(尽管“背包”暗指某种形式的权重)。所以我的答案仍然是:试着描述一下你的设计。不要举出例子,试着用简单的英语写下瓷砖是如何工作的。清楚地这样做,你就会更好地理解你到底需要做什么,需要问什么问题才能得到帮助。@kaharas:那只是一个矩形网格,网格大小是窗口内容的大小(因此窗口的边框和标题栏位于网格矩形之外)。至于纵横比,您只需将固定纵横比中的最大矩形放入屏幕的宽度/高度,这意味着根据需要裁剪宽度或高度。