所以我一直在搞3D - 2D矢量轉換,並想開始編寫一些有趣的,簡單的程序來與簡單的二次曲面等進行交互。我的問題是這樣的:更快的圖形
有什麼方法可以讓我的代碼更高效?是否有其他基於C#的程序可用於圖形?
我在C#中工作(並且絕對想保持這種方式),並且我意識到我一直以非常低效的方式執行此操作。
我不知道我是否可以改善我的循環,或者我每次移動相機時計算轉換的事實,或者什麼,但任何幫助都會很棒!
下面是一些示例代碼(繪製圖像描繪的表面:http://i.imgur.com/ewjTuii.png)
void ColorSurface(Point3[] S)
{
List<Panel> f = new List<Panel>();
try
{
for (int x = 0; x < 9; x++)
{
for (int y = 0; y < 9; y++)
{
f.Add(new Panel(S[(10 * x) + y], S[(10 * x) + y + 1], S[(10 * x) + y + 11], S[(10 * x) + y + 10], View));
}
}
}
catch { }
for (int sort = 0; sort < f.Count - 1; sort++)
{
Panel temp;
if (f[sort] > f[sort + 1])
{
temp = f[sort + 1];
f[sort + 1] = f[sort];
f[sort] = temp;
}
}
using (var g = this.CreateGraphics())
{
for (int i = 0; i < f.Count; i++)
{
double dev = f[i].PM.Z;
PointF[] R = new PointF[4];
R[0] = Transform32(f[i].P1);
R[1] = Transform32(f[i].P2);
R[2] = Transform32(f[i].P3);
R[3] = Transform32(f[i].P4);
try
{
SolidBrush G = new SolidBrush(Color.FromArgb(235, (int)(((255/Math.PI) * (Math.Atan((dev/10) + 0.2) + (Math.PI/2)))), 0, 255 - (int)(((255/Math.PI) * (Math.Atan((dev/10) + 0.2) + (Math.PI/2))))));
g.FillPolygon(G, R);
g.DrawPolygon(new Pen(Color.Black, 1), R);
DrawPoint(f[i].PM, new Pen(Color.Black, 3));
}
catch { }
}
}
}
遊戲我推薦統一(單 - c#)。對於其他所有WPF ... System.Windows.Media.Media3D命名空間 – 2015-03-25 05:57:19
在那裏你可以計算一次網格...並且只需移動相機 – 2015-03-25 06:02:42
如果您遇到了winforms應用程序,仍然可以使用WPF控件。 .. – 2015-03-25 06:04:17