Toon posts:

[C#] grafiek

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zoek naar suggesties/tips om het snelst en het best een soort van grafiek control te maken in C#. Momenteel heb ik een component gemaakt die Panel overerft. Door middel van paint te overriden teken ik bijv. lijnen en rechthoeken.

Nu heb ik problemen met de schaal en het scrollen. De control moet zo worden dat
je bijv 50x kan inzoomen en dan met de scrollbars kan pannen.

1:1 lukt wel :p .... 2xzoom lukt ook nog wel, bij 3x zoom of meer mislukken de berekeningen, aangezien ik zelf de control inpaint aan de hand van formules (of pogingen daartoe :p). Wat kan ik het beste doen? weet iemand een kant en klaar .NET component of anders een manier (formule) hoe ik perfect lijnen kan tekenen zonder dat deze vage schaaleffecten vertonen. Momenteel heb ik ongeveer zoiets:

int y1 = ( origY * _scale_factor ) + ( _scale_factor * _marge ) - _offset_y;

// offset_y = dan de value waarde van de verticale scrollbar (onderdeel van mijn comp).

In de hoop dat iemand hier al ooit iets mee gedaan heeft of tips heeft, alvast bedankt!

Verwijderd

Je moet niet zelf die berekeningen gaan doen.
Je Graphics object kan dat voor je doen.

Kijk maar eens naar de methoden:
g.TranslateTransform(translation.X, translation.Y);
g.ScaleTransform(scaleX, scaleY);

Je muis coordinaten moet je wel even omrekenen:
mouseLocation = new Point(
(int)((Math.Abs(AutoScrollPosition.X) + e.X) / scaleX),
(int)((Math.Abs(AutoScrollPosition.Y) + e.Y) / scaleY));

Verwijderd

En anders heet het onderwerp waar je meer informatie over zoekt 'clipping' en over line en polygon clipping is genoeg informatie te vinden (en de algorithmes zijn niet zo ingewikkeld)

[ Voor 4% gewijzigd door Verwijderd op 23-01-2004 11:30 ]