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

C# .NET .NET (C# a Visual Basic) WPF - jak opakovat obrázek pro pozadí dokud nevyplní celý grid American English version English version

Avatar
lukas.sei
Člen
Avatar
lukas.sei:

Č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. března 18:13
Avatar
ostrozan
Redaktor
Avatar
Odpovídá na lukas.sei
ostrozan:

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

 
Nahoru Odpovědět 27. března 18:21
Avatar
Fredep
Redaktor
Avatar
Odpovídá na lukas.sei
Fredep:
<Grid.Background>
            <ImageBrush ImageSource="bcktext1.png" TileMode="Tile" Stretch="None" />
</Grid.Background>
Nahoru Odpovědět 27. března 18:31
Týmová práce je důležitá proto, aby bylo možno obvinit z neúspěchu někoho jiného.
Avatar
lukas.sei
Člen
Avatar
lukas.sei:

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. března 18:35
Avatar
lukas.sei
Člen
Avatar
Odpovídá na Fredep
lukas.sei:

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. března 18:37
Avatar
Petr Čech (czubehead):

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í
+1 bodů
Řešení problému
Nahoru Odpovědět 27. března 21:54
Why so serious? -Joker
Avatar
Petr Čech (czubehead):

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

Nahoru Odpovědět 27. března 21:55
Why so serious? -Joker
Avatar
lukas.sei
Člen
Avatar
lukas.sei:

dík. odpoledne to vyzkouším.

 
Nahoru Odpovědět 29. března 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.