NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
švrčajs
Člen
Avatar
švrčajs:12.3.2017 18:42

Zdravím, chtěl bych poprosit o radu.. Řeším teď v bakalářské práci vykreslování Hasse diagramu a jelikož jsem nikdy nevykresloval body a jejich spojnice, tak si s tím vůbec nevím rady... Jedná se mi o to, že potřebuju vykreslit body v canvasu a následně mezi nimi, když budou splňovat podmínky, vykreslit přímky.. Nějaký tip, rada, případně ukázka, což by bylo nejlepší :), jak na to ?

Předem děkuji za odpověď ;)

 
Odpovědět
12.3.2017 18:42
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na švrčajs
Jan Vargovský:12.3.2017 19:27

Musíš to nutně dělat ve WPF? Předpokládám, že si už googlil a nic ti nevyhovovalo. Mrkni kdyžtak na D3.js :)

 
Nahoru Odpovědět
12.3.2017 19:27
Avatar
švrčajs
Člen
Avatar
Odpovídá na Jan Vargovský
švrčajs:12.3.2017 19:30

Ano googlil, ve WPF to právě musí být, takže js nepomůže :(

 
Nahoru Odpovědět
12.3.2017 19:30
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:12.3.2017 22:01

Podívej se na Bresenhamův algoritmus rasterizace úsečky: http://www.itnetwork.cz/…izace-usecky
Jinak víš, jak v WPF se dá kreslit bod po bodu do Image. Také můžeš místo toho prostě přidávat na Canvas čáry...

Nahoru Odpovědět
12.3.2017 22:01
the cake is a lie
Avatar
Ghst
Člen
Avatar
Ghst:16.3.2017 8:48

Koukal jsi na tohle?
tvary a základní kresby v přehledu WPF

Body můžeš vykreslit pomocí tebou zvoleného objektu ve 2D prostoru (x,y), dva spojíš pomocí "line", více již pomocí "path"

 
Nahoru Odpovědět
16.3.2017 8:48
Avatar
švrčajs
Člen
Avatar
švrčajs:16.3.2017 19:48

Díky všem za rady, problém vyřešen ;)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Shapes;

namespace WpfApplication1
{
    public class MyPoint
    {
        public Grid grid { get; set; }
        public Point point { get; set; }
        public String name { get; set; }
        private Ellipse ellipse;

        public MyPoint(Point p, string name)
        {
            this.point = p;
            this.name = name;
            Run();

        }

        public Polyline MakeLine(MyPoint p)
        {
            PointCollection pc = new PointCollection();
            pc.Add(this.point);
            pc.Add(p.point);

            Polyline pl = new Polyline();
            pl.Points = pc;
            pl.Stroke = new SolidColorBrush(Colors.Black);
            pl.StrokeThickness = 2;
            pl.IsManipulationEnabled = false;

            return pl;
        }


        private void Run()
        {
            this.ellipse = new Ellipse
            {
                Width = 25,
                Height = 25,
                Stroke = Brushes.Pink,
                StrokeThickness = 2,
                Fill = new SolidColorBrush(Colors.LightBlue)

            };

            this.ellipse.Margin = new Thickness(left: this.point.X -13, top: this.point.Y -15.5, right: 0, bottom: 0);

            TextBlock txt = new TextBlock();
            txt.Text = this.name;
            txt.FontSize = 11;

            txt.Width = 12;
            txt.Height = 12;
            txt.Margin = new Thickness(left: this.point.X -8, top: this.point.Y-19, right: 0, bottom: 0);
            //txt.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
            //txt.VerticalAlignment = System.Windows.VerticalAlignment.Top;

            grid = new Grid();
            grid.IsEnabled = false;
            grid.Children.Add(ellipse);
            grid.Children.Add(txt);
Editováno 16.3.2017 19:50
Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
16.3.2017 19:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.