• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# WPF Okienko do edycji grafik

Object Storage Arubacloud
0 głosów
479 wizyt
pytanie zadane 20 kwietnia 2016 w C# przez Tomek Krupa Użytkownik (820 p.)
Witam serdecznie, a jako że szanuje wasz czas przejdę od razu do problemu.

Chce stworzyć program, który będzie posiadał możliwość wgrania grafik, rozpieszczenia ich w rożnych miejscach i wyeksportowanie tego do nowego obrazu. Coś jak wrzucanie obrazków do Worda :P

Nie wiem jak poradzić sobie z tym żeby na stworzonym polu rozmieszczać grafiki i zmieniach ich rozmiary. Ktoś jest w stanie mi coś doradzić i jakoś ukiernukować? Nie musi być to typowo WPF, jesli kojarzycie coś takiego napisanego w czymkolwiek to chetnie tez zobacze i spróbuje cos z tego wyciągnąć

2 odpowiedzi

0 głosów
odpowiedź 30 czerwca 2016 przez niezalogowany
O ile dobrze rozumiem, chodzi Ci o o to by ustawić komponenty na Formę?
komentarz 21 lipca 2016 przez Tomek Krupa Użytkownik (820 p.)
chodzi mi o zdarzenie/a które pozwolą mi ruchem myszki przesuwać wgrane obrazy i ustawiać na wyznaczonym polu
0 głosów
odpowiedź 2 października 2016 przez PiotrBajer Mądrala (5,300 p.)

Zrobiłem kiedyś proste przesuwanie kontrolek na planszy dla jednej aplikacji. Szykałem gotowych bibliotek do tego, ale nic nie udało mi się znaleźć. Skończyło się na tym, że podpinałem się do trzech zdarzeń MouseDown, MouseMove i MouseUp. Dzięki temu wiedziałem kiedy obiekt zaczyna być przeciągany, kiedy jest w trakcie przeciągania i kiedy przeciąganie się kończy. Używałem marginesów do sterowania pozycją, ale można tez użyć Canvas i pozycji X oraz Y. Wklejam kod jaki używałem:
 

var rec = new Rectangle(); // Tworzę obiekt "Prostokąt"
rec.Width = 200; // Nadaję mu szerokość i wysokość
rec.Height = 200;
rec.Fill = Brushes.Red; // Wypełniam czerwonym kolorem
plansza.Children.Add(rec); // Dodaję go do planszy o nazwie "plansza", wcześniej utworzonej
rec.MouseDown += mouseDown; // Podpinam trzy zdarzenia do prostokąta
rec.MouseMove += mouseMove;
rec.MouseUp += mouseUp;

Nullable<Point> dragStart = null; // Zmienna pomocnicza, służąca do przechowywania pozycji przeciąganego elementu


void mouseDown(object sender, MouseButtonEventArgs e)
{
    var element = (UIElement)sender;
    dragStart = e.GetPosition(element); // Zapisuję pozycję elementu gdy zaczyna być przesuwany (pozycja początkowa)
    element.CaptureMouse(); // Włączam przechwytywanie pozycji myszki dla elementu
}

void mouseUp (object sender, MouseButtonEventArgs e)
{
    var element = (UIElement)sender;
    dragStart = null;
    element.ReleaseMouseCapture(); // Wyłączam przechwytywanie pozycji myszki dla elementu
}

void mouseMove (object sender, MouseEventArgs e)
{
    if (dragStart != null && e.LeftButton == MouseButtonState.Pressed) // Sprawdzam, czy ktoś kliknął na element i czy dalej przycisk jest wciśnięty
    {
        Point p = Mouse.GetPosition(plansza); // Wczytuję aktualną pozycję myszki wzgędem planszy
        var rec = sender as Rectangle;
        rec.Margin = new Thickness(p.X - dragStart.Value.X, p.Y - dragStart.Value.Y, 0, 0); // Steruję pozycją elementu za pomocą marginesów. Ustawiam pozycję za pomocą różnicy między pozycją początkową "dragStart", aktualną pozycją myszki.
    }
}

 

Podobne pytania

0 głosów
1 odpowiedź 600 wizyt
pytanie zadane 4 czerwca 2016 w C# przez winiardesign Gaduła (3,930 p.)
0 głosów
1 odpowiedź 717 wizyt
pytanie zadane 1 września 2016 w C# przez niezalogowany
0 głosów
0 odpowiedzi 395 wizyt
pytanie zadane 29 sierpnia 2016 w C# przez niezalogowany

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...