我一直在想我如何動畫效果。這與我在math.stackexchange.com上提出的問題有關。麻煩畫出3D風格的效果
https://math.stackexchange.com/questions/91120/equal-division-of-rectangles-to-make-total/
作爲一個方面說明,我並沒有實現這是對上面的問題定義繪圖算法 - 而不是用我自己的,以改變角度,使它看起來更緊湊。
我已經能夠畫出一個固定的3D風格效果,但我無法圍繞邏輯環繞我的大腦,使下面的線看起來像他們正在向你走來。
我的代碼如下,
List<double> sizes = new List<double>();
private void Form1_Load(object sender, EventArgs e)
{
for (int y = 1; y < 10; y++)
{
double s = ((240/2)/y)/4;
sizes.Add(s);
}
sizes.Add(0);
}
int offset = 0;
private void button1_Click(object sender, EventArgs e)
{
Bitmap b = new Bitmap(320, 480);
Graphics g = Graphics.FromImage(b);
Color firstColor = Color.DarkGray;
Color secondColor = Color.Gray;
Color c = firstColor;
int yOffset = 0;
for(int i = 0; i < sizes.Count; i++)
{
c = (i % 2 == 0) ? firstColor : secondColor;
int y = (int)Math.Round(b.Height - yOffset - sizes[i]);
int height = (int)Math.Round(sizes[i]);
g.FillRectangle(new SolidBrush(c), new Rectangle(0, y + offset, b.Width, height + offset));
yOffset += (int)sizes[i];
}
this.BackgroundImage = b;
offset+=1;
}
每按一下按鈕應引起矩形調整大小和靠攏。但是,我的矩形沒有像應該那樣增長。我的邏輯繪製得很好,但根本沒有移動的效果。
所以我的問題是:
是否有此效果,我不知道現有的算法,或者是這個東西很簡單,我是在想什麼?任何幫助糾正我的邏輯或指引我在正確的方向將非常感激。
無關的一面說明,您在每次點擊時創建三個不同的可用資源。嘗試將它們包裝在「使用」語句中,並在用新的替換它時處置舊的BackgroundImage。 – 2011-12-14 15:15:13
@Moozhe - 這只是丟棄代碼(如button1和Form1所指出的)以獲得邏輯,所以我並不真正過度關心性能。最終產品將在iOS中開發。我只是試圖找出一般的繪圖算法。 :) – 2011-12-14 15:16:42
@George我盡我所能 - 我的答案可能會滿足你 – 2011-12-14 18:23:30