Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Skelag
Člen
Avatar
Skelag:2.3.2015 15:30

Ahoj, nedávno jsem dělal takový "projektík" a zasekl jsem se když jsem potřeboval aby se obrázek posunul na druhou stranu obrazovky. Dlouho jsem prohledával google ale nikde jsem nenašel žádný návod který by jsem pochopil.
Nevěděl by někdo jak na to? :) (v code behind)

 
Odpovědět
2.3.2015 15:30
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Skelag
Jan Vargovský:2.3.2015 16:20

Canvas a vlastnosti Left a Top.

 
Nahoru Odpovědět
2.3.2015 16:20
Avatar
Skelag
Člen
Avatar
Odpovídá na Jan Vargovský
Skelag:2.3.2015 16:30

Mohl by jsi mi dát nějaký konkrétnější příklad jak to napsat? Třeba když chci posunout obrázek picture1 o 20 pixelů doleva?

Editováno 2.3.2015 16:32
 
Nahoru Odpovědět
2.3.2015 16:30
Avatar
Odpovídá na Skelag
Štefan Pružinský:2.3.2015 17:02

Pozri, vo XAML máš:

<Image x:Name="obrazok1" HorizontalAlignment="Left" Height="100" Margin="25,118,0,0" VerticalAlignment="Top" Width="100" Source="C:\Users\Example\Desktop\image.jpg"/>

Do code behind napíšeš napríklad (samozrejme až za InitializeCom­ponent()):

obrazok1.Margin = new Thickness(125, 122, 0, 0);

Všimni si, že som zväčšil odsadenie zľava o 100.

Editováno 2.3.2015 17:03
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
2.3.2015 17:02
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Odpovídá na Skelag
Štefan Pružinský:2.3.2015 17:09

Ešte doplním, že Thickness funguje takto:

Thickness(left, top, right, bottom);

čiže zľava, zhora, zprava, zdola.

Nahoru Odpovědět
2.3.2015 17:09
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Skelag
Člen
Avatar
Odpovídá na Štefan Pružinský
Skelag:2.3.2015 17:18

Díky, jdu to zkusit :D

 
Nahoru Odpovědět
2.3.2015 17:18
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Skelag
Jan Vargovský:2.3.2015 17:25
const int step = 5;
Canvas canvas = new Canvas();
Image image = new Image()
{
    Source = new BitmapImage(new Uri("path"))
};
canvas.Children.Add(image);
Content = canvas;
Canvas.SetLeft(image, 0);
Canvas.SetTop(image, 0);
KeyDown += (o, e) =>
    {
        //Debug.WriteLine("[{0},{1}]", Canvas.GetLeft(image), Canvas.GetTop(image));
        if (e.Key == Key.Left)
            Canvas.SetLeft(image, Canvas.GetLeft(image) - step);
        else if (e.Key == Key.Right)
            Canvas.SetLeft(image, Canvas.GetLeft(image) + step);
        else if (e.Key == Key.Up)
            Canvas.SetTop(image, Canvas.GetTop(image) - step);
        else if (e.Key == Key.Down)
            Canvas.SetTop(image, Canvas.GetTop(image) + step);
    };
 
Nahoru Odpovědět
2.3.2015 17:25
Avatar
Skelag
Člen
Avatar
 
Nahoru Odpovědět
2.3.2015 17:34
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Skelag
Jan Vargovský:2.3.2015 17:36

Způsob od kolegy bych raději nepoužíval. Záleží jak přesně se to má chovat při resizování toho okna, resp. containeru ve kterém je ten obrázek. Rozhodně bych to ale nedělal přes margin.

 
Nahoru Odpovědět
2.3.2015 17:36
Avatar
Odpovídá na Jan Vargovský
Štefan Pružinský:2.3.2015 17:42

Rád sa nechám poučiť.:)

Nahoru Odpovědět
2.3.2015 17:42
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na Skelag
Jan Vargovský:2.3.2015 17:53

Jestli bys to pak chtěl předělat do XAMLu, tak dáš normálně canvas a do něj ten Image, na tom ale nesmíš zapomenout nastavit tzv. Attached property Left a Top (resp. Canvas.Left a Canvas.Top) na nějakou hodnotu, protože defaultně je NaN (Not a Number), což se tváří jako Left & Top s hodnotou 0.

Štefan Pružinský Neříkám, že tvůj způsob je úplně špatný, ale nevím jestli bych chtěl, že se mi obrázek zdeformuje při změnění velikosti panelu.

Editováno 2.3.2015 17:55
 
Nahoru Odpovědět
2.3.2015 17:53
Avatar
Skelag
Člen
Avatar
Odpovídá na Jan Vargovský
Skelag:2.3.2015 18:30

Zní to složitě ale naštěstí to do XAMLu zatím předělávat nehodlám :)

 
Nahoru Odpovědět
2.3.2015 18:30
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 12 zpráv z 12.