Kod: Zaznacz cały
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace testowanie_powierzchni
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
const int punkt = 3;
private List<PointF> m_Points = new List<PointF>();
string StringWartoscSkali = "TU podaj skale";
double DPI, CM, WartoscSkali, SkalaDoKwadratu, Powierzchnia, PixelnaCentymetr, powierzchniaPixeli, wysokoscZdjecia, centymetrkwadratowy;
private void Form1_MouseClick(object sender, MouseEventArgs e)
{
m_Points.Add(new PointF(e.X, e.Y));
this.Invalidate();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
if (m_Points.Count >= 2)
{
e.Graphics.DrawPolygon(Pens.Blue, m_Points.ToArray());
}
if (m_Points.Count > 0)
{
foreach (PointF pt in m_Points)
{
e.Graphics.FillRectangle(Brushes.Black, pt.X - punkt, pt.Y - punkt, punkt, punkt);
}
}
}
private void wczytywanieToolStripMenuItem_Click(object sender, EventArgs e)
{
var image = new System.Windows.Forms.OpenFileDialog();
image.Filter = "";
image.Title = "Select image";
if (image.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
System.IO.FileInfo File = new System.IO.FileInfo(image.FileName);
BackgroundImage = Image.FromFile(image.FileName);
}
}
private void obliczPoleToolStripMenuItem_Click(object sender, EventArgs e)
{
Graphics skalowanie = this.CreateGraphics();
try
{
DPI = skalowanie.DpiX;
CM = DPI / 2.54;
}
finally
{
skalowanie.Dispose();
}
powierzchniaPixeli = PoleFugury * wysokoscZdjecia;//pole figury mnożymy przez wyskość wprowadzzonego zdjęcia.
PixelnaCentymetr = powierzchniaPixeli * centymetrkwadratowy;//pixelee mnożymy przez centymterkwadratowy
WartoscSkali = Convert.ToInt32(StringWartoscSkali);//dzięki temu to co wiszę okno Inputbox zmienna przyjmie wartośc liczby.
SkalaDoKwadratu = (WartoscSkali * WartoscSkali);//przemnorzyć wartość skali aby liczyć pole w realnych wartościach.
Powierzchnia = PixelnaCentymetr * SkalaDoKwadratu;//całkowity wynik, skala* powierzchnia figury
}
private void wprawadzanieSkaliToolStripMenuItem_Click(object sender, EventArgs e)
{
InputBox.Show("", "Podaj skale", ref StringWartoscSkali);
System.Text.RegularExpressions.Regex pattern = new System.Text.RegularExpressions.Regex("^[0-9]+$");
if (pattern.IsMatch(StringWartoscSkali))
{
MessageBox.Show("Skala 1:" + StringWartoscSkali);
}
else
{
MessageBox.Show("Poprawnie wprowadziłeś skale");
}
}
}
}
1. InputBox.Show. Żadna kartka mi nie wyskakuje, aby wpisać swoją wartość
2. A jak najprościej obliczyć pole figur?np: wielokątów, trójkątów itp:?