Sunteți pe pagina 1din 4

Obiecte grafice 2D

n WPF este posibil i reprezentarea obiectelor grafice 2D. Sistemul axelor de


coordonate n care sunt plasate obiectele i are originea n colul din stnga-sus al ferestrei, iar
direciile pozitive ale axelor sunt orientate ctre dreapta, respectiv n jos.

Formele predefinite pe care WPF le pune la dispoziie sunt:


Line

Rectangle
Ellipse
Polyline
Polygon

<LineX1="30"Y1="30"
X2="180"Y2="30"
Stroke="Blue"
StrokeThickness="2"/>
<RectangleWidth="150"Height="70"
RadiusX="75"RadiusY="35"
Fill="LightGray"Stroke="Black"/>
<EllipseWidth="150"Height="70"
Fill="LightGray"Stroke="Black"/>
<PolylineStroke="Black"StrokeThickness="3"
Points=070,6010,11060,16010,21070/>
<PolygonStroke="Black"StrokeThickness="3"
Fill="LightGray"
Points="070,6010,11060,16010,21070"/>

n aplicaia de mai jos sunt reprezentate o linie, o elips, un poligon i un dreptunghi.

<Line Height="73" Name="line1" Stroke="#FFFA0000" X1="35" X2="100" Y1="20" Y2="50"


StrokeThickness="5" Fill="Red" />
<Ellipse Height="61" Name="ellipse1" Stroke="#FF00BF00" Width="136"
StrokeThickness="3" />
<Polygon Height="122" Name="polygon1" Stroke="#FFD3CD2E" Width="153" Points="10,10
50,70 100,100 130,100" />
<Rectangle Height="66" Name="rectangle1" Stroke="#FF0000F7" Width="136"
StrokeThickness="4" />

Obiecte grafice 2D
Aplicaii:
1. Buton cu fa zmbitoare. Desenai elementele din figurile de mai jos. La apsarea
butonului faa trebuie s i schimbe expresia. Faa este desenat pe o suprafa de tip
Canvas.

2. Transformare imagine. Modificai dimensiunea i forma imaginii prin intermediul unui


obiect de tip Slider, ca n figurile de mai jos.
Dimensiunea Canvas-ului pe care se face desenul trebuie s fie legat de Slider.
Width Apply Data Binding Source Element Name = slider1
Path =Value
La fel pentru proprietatea Height.
Pentru ca desenul s se redimensioneze i el o dat cu suprafaa de desenare, trebuie s fie
legat de Canvas.
Pentru elipsa galben,
Width Apply Data Binding Source Element Name = canvas1
Path =ActualWidth
La fel pentru proprietatea Height.

Obiecte grafice 2D
3. Drag&Drop. Creai o aplicaie care permite deplasarea unor obiecte grafice 2D dintr-o zon
n alta a unei ferestre.

n zona din stnga se plaseaz aleator obiecte de tip Rectangle i Ellipse (s-a
apelat constructorul obiectului dorit, i s-a stabilit obiectului aspectul i poziionarea, s-a adugat
obiectul n lista de copii a containerului).
Shape forma;
for (int i = 1; i <= nrObiecte; i++)
{
if ()
{
forma = new Ellipse();
forma.Stroke = Brushes.Blue;
forma.Fill = Brushes.LightBlue;
}
else
{

}
forma.StrokeThickness = 2;
forma.Width = 40;
forma.Height = 40;
int x = r.Next((int)canvas1.Width) - 40;
if (x <= 0) x = 40;
int y = r.Next((int)canvas1.Height) - 40;
if (y <= 0) y = 40;
Canvas.SetLeft(forma, x);
Canvas.SetTop(forma, y);
}

this.canvas1.Children.Add(forma);

//nrObiecte este generat aleator

//apelul constructorului
//contur
//interior

//grosime contur
//dimensiuni

//poziie stabilit aleator


//adugare n lista de copii

Zona din dreapta (WrapPanel) trebuie s aib proprietatea AllowDrop setat pe


true. n WrapPanel obictele vor fi aezate unele dup altele, pe linii.
Pentru a efectua operaia Drag&Drop este necesar s se detecteze micarea mouse-ului,
cu butonul stng apsat. Pentru aceasta se trateaz evenimentul MouseLeftButtonDown a
containerului din stnga. Se descoper obiectul care va fi mutat (sursa evenimentului
MouseLeftButtonDown) i se creeaz un obiect de tip Object. Se ncepe operaia
Drag&Drop prin apelul metodei DoDragDrop().
3

Obiecte grafice 2D
Object forma = e.Source;
if(forma is Shape)
DragDrop.DoDragDrop((Shape)forma, (Shape)forma, DragDropEffects.Move);

Cnd butonul mouse-ului este eliberat se lanseaz evenimentul Drop asociat


WrapPanel-ului. Se extrage prin apelul funciei GetData() obiectul dragat. Elementul se
elimin din lista de copii a containerului de unde a plecat i se adaug n cea a containerului n
care a ajuns.
UIElement element = (UIElement)e.Data.GetData(e.Data.GetFormats()[0]);
if (element != null)
{
this.canvas1.Children.Remove(element);
this.wrapPanel1.Children.Add(element);
}

Creai un meniu din care se vor selecta obiectele de mutat.


4. Creai o aplicaie care s genereze i s reprezinte grafic situaia absenelor pentru
clasele a 11-a.
Datele se gsesc n fiierul absente.in. Pentru fiecare clas se citesc de pe cte dou
linii numele i numrul de absene. Clasele sunt scrise n fiier ntr-o ordine oarecare. Numele
clasei este scris cu litere mari. Clasele trebuie s se afieze n grafic n ordinea cresctoare a
literelor asociate lor.

S-ar putea să vă placă și