WPF Shape Resize/Group/Ungroup/Load/Save Control

Виконано Опубліковано %project.relative_time Оплачується при отриманні
Виконано Оплачується при отриманні

WPF Shape Resize/Group/Ungroup/Load/Save Control

We need a programmer to develop a control for our drawing application we have developed. An image of our environment is attached.

(This is a re-post as our previous post was most likely not descriptive enough)

To be considered you must fully understand the known issues listed below and be able to demonstrate a work around.

Your control will allow for:

Group/Ungroup of user selected shapes. (We only use Rectangle/Ellipse/Line/Polyline/TextBlock)

Resize while maintaining the strokethickness and proportion scaling of Left/Top position of shape positions in group to maintain original look of grouped shapes. TextBlocks will not be resized. They will maintain all original FontSize/Width/Height when resizing. Only shapes will resize.

Save group to xml file and make a png thumbnail of the group to represent group in our shape library.

Load group from saved xml file into your control.

Known Issues:

It is a know issue that ScaleTransform and ViewBox also scale the strokethickness of shapes. Another methodology must be used in your control

to maintain the original stroke thickness when being resized and scale Left/Top (Shape position) of individual shapes in group according to the new Width/Height.

Usage scenario:

Our application currently allows users to drag out a variety of shapes and text onto a white canvas (Whiteboard). They can

select shapes, move them around and resize individual shapes and text.

With your control added to our application a user will be able to select multiple shapes previously added then right click for

our context menu to select Group/Ungroup. When grouping multiple shapes the action will be for us to add the user selected shapes

to your control that will resize on a SizeChangedEvent within your control while maintaining the above criteria. (No Adorners.

Only the SizeChangedEvent as we currently use a canvas/border and rectangle for the resize handle that we place over shapes and now

your control and fire the SizeChangedEvent on resizing Width/Height of our selection control).

From our context menu the user will also be able to "Save" the new grouped shape to an xml file from a "Save" function within your

control. Your "Save" function will also make a png image that will be saved as the same path/filename as the xml.

When a user opens our Shape Library Dialog they will now see their newly created shape represented by the png image saved by your control and will

drag and drop it onto our drawing canvas where your load function within your control will re-create the shapes and positions from the saved

xml file and add them to your control.

Your Ungroup function will restore all grouped objects to their original object type and position them relatively on the drawing canvas. ie: if converting a shape object to a path to overcome the known issues, this will convert the path back to its original shape type.

Your control will also allow for us to have access to the control's Name/Uid and Tag properties.

Test Environment:

You will need to create a basic white canvas and use standard buttons to add Rectangle/Ellipse/Line/Polyline/TextBlock to the canvas.

Allow for multiple shape selection (just mousedown is ok) and a basic context menu to show Group/Ungroup and Load/Save.

Basic shape move on canvas to test layout positioning of shapes to be grouped and saved.

Resize of the new group of shapes to test for the known issues having been solved.

A standard open/save dialog box can be used for testing.

Програмування на C# WPF

ID Проекту: #4736983

Про проект

1 заявка Дистанційний проект Остання активність Jul 17, 2013

Доручено:

anonymed

have high experience in WPF, i developed some custom control for my own projects (wpf, silverlight), let me take care of, pm me

$315 AUD за 3 дні(-в)
(2 відгуків(-и))
2.3

1 фрілансер у середньому готовий виконати цю роботу за $315

nabskg

we can help you

$526 AUD за 30 дні(-в)
(0 відгуків(и))
0.0