[C#] skalowanie i obliczanie powierzchni figur

przonak007
Użytkownik
Użytkownik
Posty: 46
Rejestracja: 15 kwie 2009, o 17:31
Płeć: Mężczyzna
Lokalizacja: wałbrzych
Podziękował: 1 raz

[C#] skalowanie i obliczanie powierzchni figur

Post autor: przonak007 »

Hej zrobiłem coś takiego

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");
            }
        }
    }
}

Nie wiem czy dobrze zrobiłem skalowanie. Mam też problem z :
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:?
zeus_156
Użytkownik
Użytkownik
Posty: 36
Rejestracja: 9 sie 2013, o 15:16
Płeć: Mężczyzna
Lokalizacja: KRK
Pomógł: 7 razy

[C#] skalowanie i obliczanie powierzchni figur

Post autor: zeus_156 »

Aby skorzystać z metody InputBox musisz:
- do referencji dodać korzystanie z biblioteki Microsoft.VisualBasic.dll
- na początek programu dodać using Microsoft.VisualBasic;
- uwzględnić, że InputBox to metoda statyczna klasy Interaction.

Kod: Zaznacz cały

using Microsoft.VisualBasic;
...
    private void wprawadzanieSkaliToolStripMenuItem_Click(object sender, EventArgs e)
    { 
        StringWartoscSkali = Interaction.InputBox("", "Podaj skale", StringWartoscSkali, 100, 100);
...
Po tych zmianach jak wybierzesz odpowiednią pozycję z menu powinien pojawić się InputBox.

Więcej o klasie Interaction znajdziesz tu:
przonak007
Użytkownik
Użytkownik
Posty: 46
Rejestracja: 15 kwie 2009, o 17:31
Płeć: Mężczyzna
Lokalizacja: wałbrzych
Podziękował: 1 raz

[C#] skalowanie i obliczanie powierzchni figur

Post autor: przonak007 »

Dziękuje za pomoc . Już to działa .
A jak zrobić te obliczenia pola figur?, gdzie o tym poczytać?, nigdzie tego nie mogę znaleźć . Proszę o jakąś radę
dexter90
Użytkownik
Użytkownik
Posty: 391
Rejestracja: 11 lis 2011, o 09:48
Płeć: Mężczyzna
Pomógł: 32 razy

[C#] skalowanie i obliczanie powierzchni figur

Post autor: dexter90 »

A jak zrobić te obliczenia pola figur?
Wzorem?? Nie umiesz zrobić klasy, interfejsu??
przonak007
Użytkownik
Użytkownik
Posty: 46
Rejestracja: 15 kwie 2009, o 17:31
Płeć: Mężczyzna
Lokalizacja: wałbrzych
Podziękował: 1 raz

[C#] skalowanie i obliczanie powierzchni figur

Post autor: przonak007 »

Normalnie znam wzory na figury, ale problem jest taki że nakładam siatkę z pixeli na zdjęcie, i zaznaczam punkty na siatce i dzięki nim tworzę figurę.
Problem jest taki że nie wiem jak przy pomocy tych punktów i siatki wyliczyć tą powierzchnie.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C#] skalowanie i obliczanie powierzchni figur

Post autor: Afish »

... 2d-polygon
przonak007
Użytkownik
Użytkownik
Posty: 46
Rejestracja: 15 kwie 2009, o 17:31
Płeć: Mężczyzna
Lokalizacja: wałbrzych
Podziękował: 1 raz

[C#] skalowanie i obliczanie powierzchni figur

Post autor: przonak007 »

O coś takiego mi chodziło, dzięki wielkie
ODPOWIEDZ