NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s podporou uplatnění od 0 Kč. Více informací.

Diskuze: WPF - jak opakovat obrázek pro pozadí dokud nevyplní celý grid

V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
lukas.sei
Člen
Avatar
lukas.sei:27.3.2016 18:13

Čaute,
Mám otázku dá se nějak u wpf opakovat obrázek na pozadí tolikrát, než zaplní celý grid ? (Něco jako u html)
Když nastavím obrázek takhle:

<Grid.Background>
            <ImageBrush ImageSource="bcktext1.png"/>
</Grid.Background>

celý se roztáhne. A to je problém.
Předem děkuji za radu.

 
Odpovědět
27.3.2016 18:13
Avatar
ostrozan
Tvůrce
Avatar
Odpovídá na lukas.sei
ostrozan:27.3.2016 18:21

Co si pod tím máme představit?
Nějaká ukázka by nebyla na škodu.

 
Nahoru Odpovědět
27.3.2016 18:21
Avatar
Odpovídá na lukas.sei
Neaktivní uživatel:27.3.2016 18:31
<Grid.Background>
            <ImageBrush ImageSource="bcktext1.png" TileMode="Tile" Stretch="None" />
</Grid.Background>
Nahoru Odpovědět
27.3.2016 18:31
Neaktivní uživatelský účet
Avatar
lukas.sei
Člen
Avatar
lukas.sei:27.3.2016 18:35

Mám texturu 100x100. Moje wpf okno je 650x600.
Když nastavím texturu pozadí pomocí tohohle:

<Grid.Background>
            <ImageBrush ImageSource="bcktext1.png"/>
</Grid.Background>

vypadá to tak jak přiložený soubor.
A já potřebuji, aby se ten obrázek neroztahoval, ale pouze pořád dokola opakoval. V css je to

background-repeat: repeat;

.
Dá se toho nějak docílit ve WPF ?

 
Nahoru Odpovědět
27.3.2016 18:35
Avatar
lukas.sei
Člen
Avatar
Odpovídá na Neaktivní uživatel
lukas.sei:27.3.2016 18:37

Když to nastavím takhle dopadne to jako obrázek v příloze. Tudíž se to neopakuje, ale zobrazí se to jenom jednou uprostřed.

 
Nahoru Odpovědět
27.3.2016 18:37
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:27.3.2016 21:54

Nijak hezky to bohužel nejde. Tady je kód:

int rx = (int) Math.Ceiling(DragBoardBgGrid.ActualWidth/400.0);
            int ry = (int) Math.Ceiling(DragBoardBgGrid.ActualHeight/400.0);

            for (int x = 0; x < rx; x++)
            {
                DragboardBgGrid.ColumnDefinitions.Add(new ColumnDefinition {Width = new GridLength(400)});
            }
            for (int y = 0; y < ry; y++)
            {
                DragboardBgGrid.RowDefinitions.Add(new RowDefinition {Height = new GridLength(400)});
            }

            for (int x = 0; x < rx; x++)
            {
                for (int y = 0; y < ry; y++)
                {
                    Image bgImage = new Image
                    {
                        Source = new BitmapImage(new Uri("Images/grid_bg.png", UriKind.Relative))
                    };
                    DragboardBgGrid.Children.Add(bgImage);
                    Grid.SetColumn(bgImage, x);
                    Grid.SetRow(bgImage, y);
                }
            }

DragboardBgGrid je Grid, co vložíš pod cílový element.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
27.3.2016 21:54
the cake is a lie
Avatar
Petr Čech
Tvůrce
Avatar
Petr Čech:27.3.2016 21:55

A 400 je jednou výška a podruhé šířka toho obrázku na pozadí

Nahoru Odpovědět
27.3.2016 21:55
the cake is a lie
Avatar
lukas.sei
Člen
Avatar
lukas.sei:29.3.2016 6:58

dík. odpoledne to vyzkouším.

 
Nahoru Odpovědět
29.3.2016 6:58
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 8 zpráv z 8.