[ djomlacar @ 02.09.2011. 20:42 ] @
pozdrav svima,interesuje me da li neko zna metodu za izracunavanje povrsine proizvoljne konture u C#-u?mala napomena,metod racunanja preko bojenja pixela i zatim brojanja istih,u prilogu,je primenjen i radi,potreban mi je neki drugi metod.hvala unapred Code: private void CalculateArea() { int totalArea = 0; int x = this.Location.X + 20; int y = this.Location.Y + 20; for (int i = pnlDrawArea.Location.X + x; i < pnlDrawArea.Size.Width; i++) { for (int j = pnlDrawArea.Location.Y + y; j < pnlDrawArea.Size.Height; j++) { if (GetColor(new Point(i, j)).Name == "ff000000") { totalArea++; } } } fldArea.Text = totalArea.ToString(); } private Color GetColor(Point position) { using (var bitmap = new Bitmap(1, 1)) { using (var graphics = Graphics.FromImage(bitmap)) { graphics.CopyFromScreen(position, new Point(0, 0), new Size(1, 1)); } return bitmap.GetPixel(0, 0); private void btnCalculate_Click(object sender, EventArgs e) { //System.Windows.Shapes.Polygon CalculateArea(); } private void btnIzracunajPrekoSlike_Click(object sender, EventArgs e) { Graphics myGraphics = this.CreateGraphics(); Size s = this.Size; Bitmap memoryImage = new Bitmap(s.Width, s.Height, myGraphics); Graphics memoryGraphics = Graphics.FromImage(memoryImage); memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s); memoryImage.Save(@"C:\Polygon\Polygon.bmp"); memoryGraphics.Save(); Bitmap bmpFromFile = new Bitmap(@"C:\Polygon\Polygon.bmp"); int area = 0; //memoryImage.GetPixel(0, 0) for (int i = 0; i < bmpFromFile.Width; i++) { for (int j = 0; j < bmpFromFile.Height; j++) { if (bmpFromFile.GetPixel(i, j) == Color.Black) { area++; } } } fldArea.Text = area.ToString(); } |