 |
www.polcz.fora.pl pcz
|
Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
Juro
Dołączył: 19 Paź 2008
Posty: 63
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Wto 18:06, 30 Lis 2010 Temat postu: Grafika interaktywna, drugie laborki |
|
|
Mam problem z narysowaniem osi 0X i 0Y w tej aplikacji Wykres. Zrobił ktoś to może?
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
|
 |
GadQ
Dołączył: 30 Gru 2009
Posty: 47
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Śro 16:08, 01 Gru 2010 Temat postu: |
|
|
Jeszcze jest czas
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Juro
Dołączył: 19 Paź 2008
Posty: 63
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Śro 18:30, 01 Gru 2010 Temat postu: |
|
|
No wiem że jest ale jak już zacząłem to robić to pasuje skończyć bo za tydzień przy tym siądę i będę znowu wałkował co i jak sie je.
Najlepsze jest to że według tego algorytmu rysowania co koleś dał w pdf'ie to wykresy funkcji się rysują ale niepoprawnie względem siebie. Jak ktoś wpadnie na jakiś pomysł jak to zrobić to niech da znać.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Dominik Gwóźdź
Dołączył: 20 Paź 2008
Posty: 102
Przeczytał: 0 tematów
Pomógł: 6 razy Ostrzeżeń: 0/5
|
Wysłany: Czw 0:28, 02 Gru 2010 Temat postu: |
|
|
Moim zdaniem osie trzeba zrobić na stałe (strzałki podobno wprowadzili dopiero w Blend 4, ale chyba można to ominąć) a zmieniać tylko wartości minimalne i maksymalne X i Y w zależności od wyboru aktywnego wykresu.
Wykresy są nieproporcjonalne (y się zmienia w każdym wykresie), x zależy od nas. Gdyby miały być proporcjonalne należało by ustawić nie tylko min_x i max_x ale też min_y i max_y.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Peter
Administrator
Dołączył: 17 Paź 2008
Posty: 543
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: Exe
|
Wysłany: Śro 10:19, 08 Gru 2010 Temat postu: |
|
|
Ja mam dziwną sprawę ;/
Kompuiluje się,
Uruchamia się
Nie zawiesza przeglądarki
Ale kuźwa nic nie rysuje Nic nie dodaje do ComboBoxa(na dole)
Komuś działa poprawnie klasa? chodzi o tą 1 gotową funkcje y=a*x+b
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Dominik Gwóźdź
Dołączył: 20 Paź 2008
Posty: 102
Przeczytał: 0 tematów
Pomógł: 6 razy Ostrzeżeń: 0/5
|
Wysłany: Śro 10:22, 08 Gru 2010 Temat postu: |
|
|
Ja tak miałem kiedy w textboxach (a,b,c,d) miałem domyślną wartość 'TextBox'. Gdy zmieniłem na 0 zaczął działać.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Peter
Administrator
Dołączył: 17 Paź 2008
Posty: 543
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: Exe
|
Wysłany: Śro 10:52, 08 Gru 2010 Temat postu: |
|
|
Dominik, Niestety nadal to samo, wcześniej za każdym razem systemowo czyściłem TextBox'y, nawet jak teraz domyślnie ustawiam "0" to i tak po kliknięciu przycisku "Dodaj" nic się nie dzieje :/
Sprawdziłem, że przycisk wykonuje kod bo dla "funkcji 1" wybiera ze Switcha wartość "0", tylko coś dalej nie chce hulać
Powiedz mi na czym rysujesz te wykresy? na Canvasie?
możesz mi podać przykładowe wartości, a,b, min_x, max_x jakie wpisujesz?
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Dominik Gwóźdź
Dołączył: 20 Paź 2008
Posty: 102
Przeczytał: 0 tematów
Pomógł: 6 razy Ostrzeżeń: 0/5
|
Wysłany: Śro 10:55, 08 Gru 2010 Temat postu: |
|
|
Rysuje na canvasie. Wpisuje np. a 1, b 0, minx 1 maxx 50.
Początkowo nie rysował mi wykresów bo źle przepisałem wzór (a raczej rysował poza canvasem), ale dziwne że nie wpisuje wykresu do comboboxa.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Peter
Administrator
Dołączył: 17 Paź 2008
Posty: 543
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: Exe
|
Wysłany: Śro 11:08, 08 Gru 2010 Temat postu: |
|
|
THX, niestety takie parametry nie działają poprawnie też
Również na rysuje na Canvas'e.
Nie dodaje bo jest IF;
[/code]if (pl != null {
//dodaj do Comboboxa
}[/code]
Problem tkwi w Klasie :/ możesz mi skopiować to? albo porównać ze swoją:
Kod: |
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
namespace SilverlightApplication1
{
public class wykres
{
private
bool skalowanie;
double dx, dy;
Polyline line;
List <Polyline> lines;
int LP;
double a, b, c, d;
Brush LineColor, SelectedLineColor;
public double min_x, max_x;
public Point xy1, xy2;
public wykres()
{
xy1 = new Point();
xy2 = new Point();
LP = 500;
line = null;
lines = new List<Polyline>();
skalowanie = true;
LineColor = new SolidColorBrush
{
Color = new Color
{
R = 0,
G = 0,
B = 0,
A = 255
}
};
SelectedLineColor = new SolidColorBrush
{
Color = new Color
{
R = 255,
G = 0,
B = 0,
A = 255
}
};
}
public void SetPlotArea(double x1, double y1, double x2, double y2)
{
xy1.X = x1;
xy1.Y = y1;
xy2.X = x2;
xy2.Y = y2;
}
public double F1(double x) // y=a*x+b
{
return x * x + b;
}
public double F2(double x) // y=a*x^d+b
{
return a * Math.Pow(x, d) + b;
}
public double F3(double x) // y=sin(x*a*π)*c+cos(x*b*π)*d
{
return Math.Sin(x * a * Math.PI) * c + Math.Cos(x * b * Math.PI) * d;
}
public double F4(double x) // (sin(x*π)/b)^c
{
return Math.Pow(Math.Sin(x * Math.PI) / b, c);
}
public Polyline PlotFun(UniFunDelegate fun)
{
line = new Polyline();
double krok = (max_x - min_x) / LP;
double[] y = new double[LP];
double x = min_x;
for (int i = 0; i < LP; i++)
{
y[i] = fun(x);
x += krok;
}
double min_y = FindMin(y);
double max_y = FindMax(y);
if (skalowanie)
{
dx = (xy2.X - xy1.X) / (max_x - min_x);
dy = (xy2.Y - xy1.Y) / (max_y - min_y);
skalowanie = false;
}
x = min_x;
for (int i = 0; i <LP> xy1.X) && (px <xy2> xy1.Y) && (py <xy2> Max) Max = x;
}
return Max;
}
public double FindMin(double[] tab)
{
double Min = tab[0];
foreach (double x in tab)
{
if (x > Min) Min = x;
}
return Min;
}
public delegate double UniFunDelegate(double x);
public Polyline PlotF1(double _min_x, double _max_x, double a, double b)
{
min_x = _min_x;
max_x = _max_x;
this.a = a;
this.b = b;
return PlotFun(F1);
}
public Polyline PlotF2(double _min_x, double _max_x, double a, double b, double d)
{
min_x = _min_x;
max_x = _max_x;
this.a = a;
this.b = b;
this.d = d;
return PlotFun(F2);
}
public Polyline PlotF3(double _min_x, double _max_x, double a, double b, double c, double d)
{
min_x = _min_x;
max_x = _max_x;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
return PlotFun(F3);
}
public Polyline PlotF4(double _min_x, double _max_x, double a, double b, double c)
{
min_x = _min_x;
max_x = _max_x;
this.a = a;
this.b = b;
this.c = c;
return PlotFun(F4);
}
public Polyline Remove()
{
Polyline del_line = line;
if (del_line != null)
{
lines.Remove(del_line);
}
if (lines.Count > 0)
{
line = lines[lines.Count - 1];
SetActive(lines.Count - 1);
}
return del_line;
}
public void SetActive(int nw)
{
if (lines.Count > nw)
{
for (int i = 0; i < lines.Count; i++)
{
if (i == nw)
{
line = lines[i];
line.Stroke = SelectedLineColor;
}
else
{
lines[i].Stroke = LineColor;
}
}
}
}
public int LiczbaWykresow() {
return lines.Count;
}
}
}
|
Post został pochwalony 0 razy
Ostatnio zmieniony przez Peter dnia Śro 11:08, 08 Gru 2010, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
 |
Dominik Gwóźdź
Dołączył: 20 Paź 2008
Posty: 102
Przeczytał: 0 tematów
Pomógł: 6 razy Ostrzeżeń: 0/5
|
Wysłany: Śro 11:40, 08 Gru 2010 Temat postu: |
|
|
Forum niestety "zjada" część kodu więc swoją klasę wysłałem na Twojego maila [link widoczny dla zalogowanych]. Gdyby nie doszło podaj mi aktualnego maila.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Peter
Administrator
Dołączył: 17 Paź 2008
Posty: 543
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: Exe
|
Wysłany: Śro 12:06, 08 Gru 2010 Temat postu: |
|
|
Dzięki, doszło, mail aktualny
Ale problem nie rozwiązany ;-(
Zauważyłem na początku że Ty masz:
Kod: |
namespace wykres
{
public class Wykres |
Ja miałem namespace inne(SilverlightApplication1), dalszą część kodu przeanalizuje, ale chyba mamy identycznie skoro podmiana Klasy nic nie pomogła.
Po podmianie miałem problem z kompilacją, bo:
Kod: |
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using wykres;
namespace SilverlightApplication1
{
public partial class MainPage : UserControl
{
public Wykres w;
public MainPage()
{
// Required to initialize variables
InitializeComponent();
w = new Wykres();
w.SetPlotArea(10, 10, CWykres.Width - 10, CWykres.Height - 10);
} |
musiałem dodać jak gdyby Twoją klasę, moja była w tej samej przestrzeni nazw i nic nie musiałem dodawać
Powiedz mi jak Ty deklarujesz "W" bo kurcze tutaj chyba jest byk ;/ ja musiałem dopisać linijkę "Public Wykres w" a tego w laborkach nie ma :/
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Dominik Gwóźdź
Dołączył: 20 Paź 2008
Posty: 102
Przeczytał: 0 tematów
Pomógł: 6 razy Ostrzeżeń: 0/5
|
Wysłany: Śro 12:45, 08 Gru 2010 Temat postu: |
|
|
Przestrzeń nazw jest zależna od nazwy projektu. w deklaruję w MainPage jako globalne czyli: Wykres w; (Tak samo jak u Ciebie z tym, że bez public).
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Peter
Administrator
Dołączył: 17 Paź 2008
Posty: 543
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: Exe
|
Wysłany: Śro 13:07, 08 Gru 2010 Temat postu: |
|
|
Kod: |
private void Button_dodaj_Click_1(object sender, RoutedEventArgs e)
{
TextBlock_Nazwa_Funkcji.Text = "test0";
int numer = ComboBox_w_funkcji.SelectedIndex;
TextBlock_Nazwa_Funkcji.Text = "test1";
double min_x = Double.Parse(TextBox_min_x.Text);
TextBlock_Nazwa_Funkcji.Text = "test2";
double max_x = Double.Parse(TextBox_max_x.Text);
TextBlock_Nazwa_Funkcji.Text = "test3";
double a = Double.Parse(TextBox_a.Text);
TextBlock_Nazwa_Funkcji.Text = "test4";
double b = Double.Parse(TextBox_b.Text);
TextBlock_Nazwa_Funkcji.Text = "test5";
double c = Double.Parse(TextBox_c.Text);
TextBlock_Nazwa_Funkcji.Text = "test6";
double d = Double.Parse(TextBox_d.Text);
Polyline pl = null;
TextBlock_Nazwa_Funkcji.Text = "test7";
switch (numer)
{
case 0: pl = w.PlotF1(min_x, max_x, a, b); break;
case 1: pl = w.PlotF2(min_x, max_x, a, b, d); break;
case 2: pl = w.PlotF3(min_x, max_x, a, b, c, d); break;
case 3: pl = w.PlotF4(min_x, max_x, a, b, c); break;
}
if (pl != null)
{
CWykres.Children.Add(pl); //dodanie wykresu
ComboBox_wykresy.Items.Add("Wykres " + w.LiczbaWykresow());
CWykres.UpdateLayout();
} |
Wkurzyłem się i zacząłem na swoją własna rękę to testować, szkoda tylko, że podczas działania aplikacji nie wywala błędów ;-(
Teraz do rzeczy, w Operze zostaje tylko wyświetlony TEST1, czyli aplikacja przestaje działać na linijce:
double min_x = Double.Parse(TextBox_min_x.Text);
teraz pytanie? Dominik u Ciebie jak wygląda metoda obsługi przycisku???? i czy pobieranie danych masz tak samo jak u mnie^^ pomijam różnice w nazwie pól.
edit///
Nie wierzyłem ze to powiem, IE jest "cacy"
Kod: |
Szczegóły błędu na stronie sieci Web
Agent użytkownika: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Sygnatura czasowa: Wed, 8 Dec 2010 12:16:59 UTC
Wiadomość: Unhandled Error in Silverlight Application Input string was not in a correct format. w System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
w System.Double.Parse(String s)
w SilverlightApplication1.MainPage.Button_dodaj_Click_1(Object sender, RoutedEventArgs e)
w System.Windows.Controls.Primitives.ButtonBase.OnClick()
w System.Windows.Controls.Button.OnClick()
w System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
w System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
w MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
Wiersz: 1
Znak: 1
Kod: 0
Identyfikator URI: http://localhost:13860/TestPage.html
Wiadomość: Unhandled Error in Silverlight Application Input string was not in a correct format. w System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
w System.Double.Parse(String s)
w SilverlightApplication1.MainPage.Button_dodaj_Click_1(Object sender, RoutedEventArgs e)
w System.Windows.Controls.Primitives.ButtonBase.OnClick()
w System.Windows.Controls.Button.OnClick()
w System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
w System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
w MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
Wiersz: 1
Znak: 1
Kod: 0
Identyfikator URI: http://localhost:13860/TestPage.html
Wiadomość: Unhandled Error in Silverlight Application Input string was not in a correct format. w System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
w System.Double.Parse(String s)
w SilverlightApplication1.MainPage.Button_dodaj_Click_1(Object sender, RoutedEventArgs e)
w System.Windows.Controls.Primitives.ButtonBase.OnClick()
w System.Windows.Controls.Button.OnClick()
w System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
w System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
w MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
Wiersz: 1
Znak: 1
Kod: 0
Identyfikator URI: http://localhost:13860/TestPage.html
Wiadomość: Unhandled Error in Silverlight Application Input string was not in a correct format. w System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
w System.Double.Parse(String s)
w SilverlightApplication1.MainPage.Button_dodaj_Click_1(Object sender, RoutedEventArgs e)
w System.Windows.Controls.Primitives.ButtonBase.OnClick()
w System.Windows.Controls.Button.OnClick()
w System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
w System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
w MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
Wiersz: 1
Znak: 1
Kod: 0
Identyfikator URI: http://localhost:13860/TestPage.html
Wiadomość: Unhandled Error in Silverlight Application Input string was not in a correct format. w System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
w System.Double.Parse(String s)
w SilverlightApplication1.MainPage.Button_dodaj_Click_1(Object sender, RoutedEventArgs e)
w System.Windows.Controls.Primitives.ButtonBase.OnClick()
w System.Windows.Controls.Button.OnClick()
w System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
w System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
w MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
Wiersz: 1
Znak: 1
Kod: 0
Identyfikator URI: http://localhost:13860/TestPage.html
Wiadomość: Unhandled Error in Silverlight Application Input string was not in a correct format. w System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
w System.Double.Parse(String s)
w SilverlightApplication1.MainPage.Button_dodaj_Click_1(Object sender, RoutedEventArgs e)
w System.Windows.Controls.Primitives.ButtonBase.OnClick()
w System.Windows.Controls.Button.OnClick()
w System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
w System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
w MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
Wiersz: 1
Znak: 1
Kod: 0
Identyfikator URI: http://localhost:13860/TestPage.html
Wiadomość: Unhandled Error in Silverlight Application Input string was not in a correct format. w System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
w System.Double.Parse(String s)
w SilverlightApplication1.MainPage.Button_dodaj_Click_1(Object sender, RoutedEventArgs e)
w System.Windows.Controls.Primitives.ButtonBase.OnClick()
w System.Windows.Controls.Button.OnClick()
w System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
w System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
w MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName)
Wiersz: 1
Znak: 1
Kod: 0
Identyfikator URI: http://localhost:13860/TestPage.html
|
Opera ukryła, IE ma na to podgląd
Ale za cholere mi to prawie nic nie mówi, po za tym że jest nie poprawny format danych xD więc skoro ja przepisałem to z laborek i inni też, a mi tylko nie działa(chyba) no to ..... nie wiem ;-(
Edit//
Już chyba wiem, chodzi o ustawienia językowe Ale co to ma wspólnego to ni wim ;=]
Post został pochwalony 0 razy
Ostatnio zmieniony przez Peter dnia Śro 13:29, 08 Gru 2010, w całości zmieniany 6 razy
|
|
Powrót do góry |
|
 |
pawmar
Dołączył: 27 Lut 2010
Posty: 50
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Śro 14:16, 08 Gru 2010 Temat postu: |
|
|
Hej, czy Canvas na którym mają być rysowane wykresy ma być utworzony na prostokącie, i ma on mieć nazwę CWykres?
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
Peter
Administrator
Dołączył: 17 Paź 2008
Posty: 543
Przeczytał: 0 tematów
Pomógł: 2 razy Ostrzeżeń: 0/5 Skąd: Exe
|
Wysłany: Śro 16:45, 08 Gru 2010 Temat postu: |
|
|
Dominik, THX za pomoc raz jeszcze
Taka mała bzdura a tyle kłopotu, a że Visual tego nie wyłapał
pawmar - Tak
CWykres to Canvas ułożony nad prostokątem gradientowym, bynajmniej ja tak mam i jako tako to działa.
Post został pochwalony 0 razy
|
|
Powrót do góry |
|
 |
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
|