C# 窗口平铺算法
我有一个带有两个按钮的表单:C# 窗口平铺算法,c#,window,C#,Window,我有一个带有两个按钮的表单: 打开一个新表单,并将其放入列表中 平铺打开的窗体 我现在需要做的是编写一个算法,最大化表单占用的用户屏幕。显然这很简单,所以我有一些额外的要求: 宽高比必须在给定的间隔内,例如[a,b] 窗口可以由V像素“垂直”和H像素“水平”重叠 编辑:因为它似乎不清楚,这里的代码 public static List<Form> formlist = new List<Form>(); ... priva
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:那只是一个矩形网格,网格大小是窗口内容的大小(因此窗口的边框和标题栏位于网格矩形之外)。至于纵横比,您只需将固定纵横比中的最大矩形放入屏幕的宽度/高度,这意味着根据需要裁剪宽度或高度。